2010-07-03 75 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