2015-09-03 22 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