2011-03-02 85 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