2015-09-03 34 views
1

我想使用,以計算下面的表達式MATLAB:如何做一個行和列矢量的計算,以獲得矩陣

ans = cos(ω.t + φ) 

其中:

  • ω是一個標量
  • 噸是[1個XN]矩陣
  • φ是[MX 1]矩陣

ans應該是[m×n]矩陣。

是否可以使用arrayfun來計算這個表達式?他們是否有其他MATLAB函數來計算這個值,還是我需要在for循環中逐行計算它?

+0

我真的建議,以避免名稱'ans'作爲變量(_unless你不介意它是否被覆蓋得很快) – Hoki

回答

7

這看起來像... bsxfun!

w=randn; 
n=5; m=4; 
t=[1:n]; 
p=[1:m].'; 
cos(bsxfun(@plus, w*t, p)) 

結果工作:

ans = 

    0.180565 -0.206185 -0.562089 -0.833904 -0.980967 
    -0.730080 -0.934792 -0.999659 -0.914976 -0.693411 
    -0.969493 -0.803956 -0.518147 -0.154823 0.231664 
    -0.317559 0.066034 0.439747 0.747674 0.943748 
+1

總是加上一個'bsxfun'! –

4

一種可能的方式

t = 1:n; 
p = (1:m)'; 
[tm,pm] = meshgrid(t,p); % Produces matrices by repeating t and p 
ans = cos(w*tm+pm);  % ans is m x n