我想使用,以計算下面的表達式MATLAB:如何做一個行和列矢量的計算,以獲得矩陣
ans = cos(ω.t + φ)
其中:
- ω是一個標量
- 噸是[1個XN]矩陣
- φ是[MX 1]矩陣
ans
應該是[m×n]矩陣。
是否可以使用arrayfun
來計算這個表達式?他們是否有其他MATLAB函數來計算這個值,還是我需要在for
循環中逐行計算它?
我想使用,以計算下面的表達式MATLAB:如何做一個行和列矢量的計算,以獲得矩陣
ans = cos(ω.t + φ)
其中:
ans
應該是[m×n]矩陣。
是否可以使用arrayfun
來計算這個表達式?他們是否有其他MATLAB函數來計算這個值,還是我需要在for
循環中逐行計算它?
這看起來像... 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
總是加上一個'bsxfun'! –
一種可能的方式
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
我真的建議,以避免名稱'ans'作爲變量(_unless你不介意它是否被覆蓋得很快) – Hoki