簡體   English   中英

如何在MATLAB中為矩陣中的每個值計算結果

[英]How do I calculate result for every value in a matrix in 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

D_iso = (4 * pi)/omega_iso

這段代碼很好。 它采用尺寸為72 * 37的矩陣。 環路是積分的近似值,將其進一步除以4pi即可得到天線方向性的一個值。

現在此代碼給出一個值,該值將約為1.002。

我的問題是我不需要1值。 我需要一個72 * 37的矩陣作為答案,其中在72 * 37矩陣的每個像元上都實現了上述積分近似。 因此Directviity'D'也會導致矩陣大小相同,每個像元的值相同。

因此,我們要做的就是獲取每個單元格的價值,而不是獲得1的值。

誰能請幫忙。

您談論的是創建一個本質上是U元素功能的結果。但是,代碼絕對不依賴於U元素。仔細查看所編寫的內容。 盡管確實使用了變量U_iso,但在編寫該代碼時,從未在該代碼的任何位置使用U的任何元素。

因此,當您談論為矩陣U定義此定義時,該定義毫無意義。 到目前為止,似乎在最后調用repmat會創建所需大小的矩陣,並且顯然這不是您想要的。

也許您為了簡化說明而試圖使問題變得簡單。 但是,您所做的只是過分簡化,而不給我們留下任何有意義的東西。 請更清楚地說明您的問題,並顯示與您的說明一致的代碼,以獲得比我到目前為止提供的更好的答案。

(注意:一種選擇可能是使用arrayfun。或者,使用簡單的矢量化操作,此問題的答案可能更瑣碎。我目前不知道。)

編輯:

您的問題仍然無法回答。 此循環創建單個標量結果,實質上是對整個數組求和。 您不必說要為U_iso的每個元素計算積分的含義,因為您已經對整個數組求和了。 請學會准確回答您的問題,否則我們只是在猜測您的意思。

目前,我最好的猜測是您可能希望在兩個維度上計算一個累積積分。 如果這是您的目標,那么cumtrapz可以為您提供幫助。 但是我不確定這不是您的目標,因為您的解釋如此不完整。

您說希望在結果的每個單元格中獲得相同的值。 如果這是您想要的,那么最后調用repmat即可滿足您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM