2011-03-02 87 views
1

我试图创建一个大小为121x101的向量,这样第i列由V_t*e组成,其中V_t = 1000*10^((i-1)/20)e是一列121列。在MATLAB中的向量化

显然i是从1变化到1.01亿,但我如何将它应用到矩阵中,而不会在结果中产生最终值(将这个值应用到每列没有重复命令)?

回答

2

从你的问题来看,它看起来每行都是一样的。因此,你可以计算为

iRow = 1:101; 
V_t = 1000*10.^((iRow-1)/20); 
V_te = repmat(V_t,121,1); 

使用REPMAT一行。如果你想有e行2,等等,你可以使用NDGRID创建大小相同的两个阵列为1行1,2输出,该输出包含的ei的值的输出的每一个元素(i,j)

[ee,ii] = ndgrid(1:121,1:101); 
V_te = 1000*10.^((i-1)/20) .* ee; 

或者可以使用BSXFUNei膨胀为你

iRow = 1:101; 
V_t = 1000*10.^((iRow-1)/20); 
V_te = bsxfun(@times,V_t,(1:121)'); 
+0

是的,每一行都是一样的。这似乎工作,谢谢。出于某种原因,当我尝试计算V_t之前,它不接受我(现在的iRow)变量,因为它试图计算一个标量。我认为某种分段函数(。)是必要的,而不是在哪里。再次感谢。 – alan 2011-03-02 13:23:08

+0

@alan:不客气。如果在代数表达式中使用数组,总是使用'.'运算符是最安全的。 – Jonas 2011-03-02 13:33:25