【问题标题】:How to do a calculation on a row and column vector to obtain a matrix如何对行和列向量进行计算以获得矩阵
【发布时间】:2015-09-03 15:39:47
【问题描述】:

我想使用 MATLAB 计算以下表达式:

ans = cos(ω.t + φ)

地点:

  • ω 是一个标量
  • t 是一个 [1 x n] 矩阵
  • φ 是一个 [m x 1] 矩阵

ans 应该是一个 [m x n] 矩阵。

是否可以使用arrayfun 来计算这个表达式?他们是任何其他 MATLAB 函数来计算它还是我需要在 for 循环中逐行计算它?

【问题讨论】:

  • 我真的建议避免将名称 ans 作为变量(除非您不介意它是否会很快被覆盖

标签: arrays matlab matrix multidimensional-array


【解决方案1】:

这看起来像是一份工作……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,总是加一!
【解决方案2】:

一种可能的方法

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多