如何做一个计算上的行和列向量,以获得一个矩阵



我想用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

相关内容

  • 没有找到相关文章

最新更新