2010-07-03 102 views
0

我有個很簡單的問題。Matlab矩陣簡單工作

假設我們有以下代碼來計算各向同性天線的方向性。

ThDeg = 0:5:180; 
dtheta = 5*pi/180; 
dphi = 5*pi/180; 
Th = ThDeg*pi/180; 

% the above are the angles at which the following matrix is acquired in practical case. In this case we take a matrix of all ones. 

U_iso = ones(72, 37); % our matrix assumed 

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 

這是正確的代碼,它給出了非常接近1的值,這應該是一個全向天線。它只是一個健全的檢查,所以當我們有72 * 37的實際矩陣時,我們可以確認我們的代碼是正確的。

現在的問題是,在上面的例子中,我們採用了72 * 37的矩陣,並做了我們的積分近似並得到了一個方向性值。

我需要的是計算72 * 37矩陣的每個單元值的方向性。因此,結果將是另一個72 * 37矩陣,顯示每個像元值(在理想情況下爲1)的計算值。因此,對於這個例子,目前我們只將結果作爲方向性的一個值。我們在U_iso矩陣的每個單元格都需要這個值。這會導致72 * 37的矩陣具有相同的值。而且,矩陣中的所有值都與上面代碼的結果相同。

所以你能幫助我嗎?我無法理解如何移動矩陣中的循環。所以它計算每個單元格。

等待回覆。

+0

你的意思是U_iso是矩陣的矩陣或什麼? – kennytm 2010-07-03 19:30:01

+0

沒有它只是一個假設矩陣。通常,這是完美的天線。但是當我進行測量時,實際的天線在其72 * 37矩陣中將具有不同的數字。這實際上是輻射模式。爲了更簡單,使用上面的U_iso。 – adeel 2010-07-03 20:26:48

+0

您可以使用採用相同大小矩陣的「元素」運算符,並對每個矩陣的每個(i,j)元素進行某種操作(例如乘法)。 – rwong 2010-07-03 20:30:38

回答

0
SinThJ = zeros(72, 37); 

% For each of the 72 x 37 cell, compute sin(Th(j)) 

for j = 1:37 
    SinThJ(:, j) = repmat(sin(Th(j)), 72, 1); 
end 

% Elementwise multiplication 
% This omega_iso becomes a matrix 

omega_iso = U_iso .* SinThJ * dphi * dtheta; 

% This is the integration of the matrix 

omega_iso_sum = sum(sum(omega_iso)); 
+0

很好的答案。您還可以使用sum(omega_iso(:))快速求和所有元素,而不管數組的維數有多少 – TDevlin 2015-12-10 23:23:48

0

rwongs答案是最好的矢量化你在之後。 否則,回答你關於移動循環的問題。你可以這樣做:

ThDeg = 0:5:180; 
dtheta = 5*pi/180; 
dphi = 5*pi/180; 
Th = ThDeg*pi/180; 

% the above are the angles at which the following matrix is acquired in practical case. In this case we take a matrix of all ones. 

U_iso = ones(72, 37); % our matrix assumed 

omega_iso = zeros(72,37; 
for i = 1:72 
    for j=1:37 
     omega_iso(i,j) = omega_iso(i,j) + U_iso(i,j)*sin(Th(j))*dphi*dtheta; 
    end 
end 

D_iso = 4.*pi./omega_iso 

是你做的總和(D_iso(:)),將總結所有的元素,你應該讓你有過什麼。