2010-07-03 76 views
0

在矩阵中的每个值保持简单,采取矩阵的那些,即如何计算结果在MATLAB

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 

and

D_iso = (4 * pi)/omega_iso 

这段代码没问题。它采用尺寸为72 * 37的矩阵。环路是积分的近似值,进一步被4pi除以得到天线的方向性的一个值。

现在这段代码给出了一个1.002左右的值。

我的问题是我不需要1值。我需要一个72 * 37的矩阵作为我的答案,在72 * 37矩阵的每个单元上实现上述积分逼近。因此Directviity'D'也产生一个相同大小的矩阵,每个单元给出相同的值。

所以我们所要做的就是取代1值,我们需要在每个单元格上的值。

任何人都可以请帮忙。

+2

提示:您可以通过在行首添加四个空格来突出显示代码。 – 2010-07-03 10:59:52

+0

U和U_iso是相同的矩阵吗? U_iso的两个维度是否与phi和theta相对应?如果是这样,那么我认为你正在计算2D表面上的标量积分。如果你想为每个点(phi,theta)设定一个值,那么你需要制定一个不同的积分来开始。 – 2010-07-03 11:10:22

+0

我从你的其他(现在已关闭)帖子中添加了一些更正。请检查是否有任何其他更改需要制作,并使用“编辑”链接(位于注释上方,但位于标签下方)将其放在此处而不是创建单独的帖子。谢谢。 http://stackoverflow.com/questions/3171564/how-do-i-calculate-result-for-every-value-in-a-matrix-in-matlab – 2010-07-03 17:59:39

回答

2

你说的是创建一个基本上是U的元素的函数的结果。然而,代码依赖于U的元素并不代表任何地方。仔细看看你写的是什么。当你使用变量U_iso时,永远不会像你写的那样在代码中的任何地方使用U的任何元素。

所以,当你谈论定义这个矩阵U时,这个定义是没有意义的。到目前为止,似乎在最后一次调用repmat会创建一个所需大小的矩阵,显然这不是您要查找的内容。

也许你试图让问题变得简单易于解释。但是你所做的是过度简化,而不是让我们留下一些甚至有意义的东西。请更清楚地解释您的问题,并显示与您的解释一致的代码,以获得比我目前可以提供的更好的答案。

(注:一种选择可能是使用arrayfun还是这个问题的答案可能更琐碎,使用简单的矢量操作我不知道在这一点上。)

编辑:

你的问题仍然无法回答。此循环创建单个标量结果,实质上是对整个数组进行求和。你没有说明你为U_iso的每个元素计算的积分意味着什么,因为你已经在整个数组中求和了。请在你的问题中学会准确,否则我们只是在猜测你的意思。

我现在最好的猜测是,你可能希望计算一个累积积分,在两个维度。如果这是你的目标,cumtrapz可以帮助你。但我不确定这是你的目标,因为你的解释不完整。

你说你希望在结果的每个单元格中得到相同的值。如果这就是你所希望的,那么最后打电话给repmat会做你想做的事。

+0

对不起,有一个错误。 第一行是 U_iso = ones(72 * 37) – adeel 2010-07-03 13:11:27