保持简单,取一个矩阵,即
U_iso = ones(72,37)
和一些参数
ThDeg = 0:5:180;
dtheta = 5*pi/180;
dphi = 5*pi/180;
Th = ThDeg*pi/180;
现在代码是
omega_iso = 0;
for i = 1:72
for j=1:37
omega_iso = omega_iso + U_iso(i,j)*sin(Th(j))*dphi*dtheta;
end
end
和
D_iso = (4 * pi)/omega_iso
这段代码很好。它采用尺寸为72 * 37的矩阵。该循环是积分的近似值,进一步除以4pi以得到天线方向性的一个值。
现在这段代码给出了一个大约1.002的值。
我的问题是我不需要1个值。我需要一个72 * 37矩阵作为我的答案,其中在72 * 37矩阵的每个单元格上实现上述积分近似。因此,Directviity'D'也会产生相同大小的矩阵,每个单元格给出相同的值。
所以我们所要做的就是不是获得1个值,而是需要每个单元格的值。
任何人都可以帮忙。
答案 0 :(得分:2)
你谈到创建一个基本上是U元素的函数的结果。但是,该代码在任何地方都不依赖于U的元素。仔细查看你所写的内容。虽然你确实使用了变量U_iso,但是在你编写代码时,U中的任何元素都不会被使用。
因此,当你谈到为矩阵U定义它时,这个定义毫无意义。到目前为止,似乎在最后调用repmat会创建一个所需大小的矩阵,显然这不是你想要的。
也许您试图简化问题以便于解释。但你所做的是过度简化,而不是让我们留下任何有意义的东西。请更清楚地解释您的问题并显示与您的解释一致的代码,以获得比我目前为止提供的更好的答案。
(注意:一个选项可能是使用arrayfun。或者这个问题的答案可能更简单,使用简单的矢量化操作。我现在还不知道。)
修改强>
你的问题仍然无法回答。此循环创建单个标量结果,基本上对整个数组求和。你没有说出你为U_iso的每个元素计算积分的意思,因为你已经在整个数组上求和了。请务必在问题中保持准确,否则我们只是猜测你的意思。
我现在最好的猜测是你可能希望在两个维度上计算累积积分。 cumtrapz可以帮助你,如果这是你的目标。但我不确定这是你的目标,因为你的解释是如此不完整。
您说您希望在结果的每个单元格中获得相同的值。如果这是你想要的,那么最后调用repmat就可以达到你想要的效果。