我想使用,以计算下面的表达式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