2013-11-22 58 views
0

我是新來的Matlab,我試圖解決一個問題,涉及創建一個d維乘法表,其中每個邊緣從1到n。問題陳述說輸入d = 0應該返回數字1,d = 1應該返回一個列向量,元素爲1到n。Matlab d維乘法表?

理想情況下,我只是沿着d維創建一個1到n的矩陣,然後遍歷每個元素設置它等於索引的乘積,但我不知道如何創建d維矩陣。

任何人都可以幫我解決這個問題嗎?

回答

2

您可以重複使用bsxfun來創建表格。在每次迭代時,矢量1,2,...,n被移動到一個新的維度,並乘以先前的結果乘以(單一擴展)。

%// Data 
d = 3; 
n = 10; 

%// Computations 
vector = (1:n).'; %// first dimension: column vector 
result = 1; %// initialization 
for n = 1:d 
    result = bsxfun(@times, result, vector); %// new dimension 
    vector = shiftdim(vector,-1); %// shift to the next dimension 
end 
+0

非常感謝!我不熟悉shiftdim命令。 – user3020151