2013-11-22 93 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