我想用MATLAB计算以下表达式:
ans = cos(ω.t + φ)
地点:
- ω是一个标量
- t是一个[1 × n]矩阵
- φ是一个[m x 1]矩阵
ans
应该是一个[m x 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
一种可能的方法
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