我想使用公式 z(i, j) = 2 * x(i) 3 * y(j)^2 在 MATLAB 中填充一個 10x15 矩陣,以便 (i, j) = z(i, j)。我有 x 和 y 的陣列,它們的大小分別為 10 和 15。
我已經使用下面的代碼完成了這項任務,但我想在一行中完成,因為有人告訴我這是可能的。有什么想法嗎?
x = linspace(0,1,10);
y = linspace(-0.5,0.5,15);
z = zeros(10,15);
m_1 = 2;
m_2 = 3;
for i = 1:length(x)
for j = 1:length(y)
z(i, j) = m_1*x(i) m_2*y(i)^2;
end
end
uj5u.com熱心網友回復:
看起來您的原始回圈中有一個錯誤:
您使用iindex 兩次:m_1*x(i) m_2*y(i)^2。
結果是z矩陣的所有列都相同。
要應用公式,請z(i, j) = 2*x(i) 3*y(j)^2使用以下回圈:
x = linspace(0,1,10);
y = linspace(-0.5,0.5,15);
z = zeros(10,15);
m_1 = 2;
m_2 = 3;
for i = 1:length(x)
for j = 1:length(y)
z(i, j) = m_1*x(i) m_2*y(j)^2;
end
end
為了使用一條線來實作上述回圈,我們可以先使用meshgrid。
將回圈替換為:
[Y, X] = meshgrid(y, x);
Z = m_1*X m_2*Y.^2;
對于擴展,請閱讀meshgrid的檔案,它比我可以撰寫的任何擴展都要好...
以下命令提供與原始回圈相同的輸出(但可能無關緊要):
Z = repmat((m_1*x m_2*y(1:length(x)).^2)', [1, length(y)]);
測驗:
max(max(abs(Z - z)))
ans =
0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456639.html
標籤:matlab 矩阵 wolfram-mathematica 矩阵乘法
上一篇:如何將空陣列附加到元胞陣列
下一篇:直方圖函式繪制與請求不同的顏色
