1
我试图创建一个大小为121x101的向量,这样第i列由V_t*e
组成,其中V_t = 1000*10^((i-1)/20)
和e
是一列121列。在MATLAB中的向量化
显然i
是从1变化到1.01亿,但我如何将它应用到矩阵中,而不会在结果中产生最终值(将这个值应用到每列没有重复命令)?
我试图创建一个大小为121x101的向量,这样第i列由V_t*e
组成,其中V_t = 1000*10^((i-1)/20)
和e
是一列121列。在MATLAB中的向量化
显然i
是从1变化到1.01亿,但我如何将它应用到矩阵中,而不会在结果中产生最终值(将这个值应用到每列没有重复命令)?
从你的问题来看,它看起来每行都是一样的。因此,你可以计算为
iRow = 1:101;
V_t = 1000*10.^((iRow-1)/20);
V_te = repmat(V_t,121,1);
使用REPMAT一行。如果你想有e
行2,等等,你可以使用NDGRID创建大小相同的两个阵列为1行1,2输出,该输出包含的e
和i
的值的输出的每一个元素(i,j)
[ee,ii] = ndgrid(1:121,1:101);
V_te = 1000*10.^((i-1)/20) .* ee;
或者可以使用BSXFUN做e
和i
膨胀为你
iRow = 1:101;
V_t = 1000*10.^((iRow-1)/20);
V_te = bsxfun(@times,V_t,(1:121)');
是的,每一行都是一样的。这似乎工作,谢谢。出于某种原因,当我尝试计算V_t之前,它不接受我(现在的iRow)变量,因为它试图计算一个标量。我认为某种分段函数(。)是必要的,而不是在哪里。再次感谢。 – alan 2011-03-02 13:23:08
@alan:不客气。如果在代数表达式中使用数组,总是使用'.'运算符是最安全的。 – Jonas 2011-03-02 13:33:25