2015-07-28 59 views
0

我想通過該函數創建一個N * N的矩陣A:如何有效地在matlab中創建這個矩陣?沒有for循環?

enter image description here

其中x和y是N d的載體。我可以通過創建4個嵌套for循環,但如何更有效地實現它?有沒有for循環的方法?

非常感謝。

+2

我假設它是'cos(k * y_j)'而不是'n'? – Shai

+2

'M'和'K'是什麼? – Shai

+0

如果你知道M和K是什麼,你可以用矩陣形式做所有事情,從而避免了循環。 – GameOfThrows

回答

0

使用元素明智的。*操作將比4個嵌套for循環快得多。我想你想要的東西是這樣的:

M = 100; 
K = 100; 
N = 40; 
x = linspace(0,1,N); 
y = linspace(0,1,N); 

%order reversed matches i,j notation in question 
[Y,X] = meshgrid(y,x); 
A = zeros(size(X)); 

for m = 1:M 
    for k = 1:K 

     A = A + sqrt(m^2 + k^2)*sin(m*X).*cos(k*Y); 

    end 
end