0
我是新来的Matlab,我试图解决一个问题,涉及创建一个d维乘法表,其中每个边缘从1到n。问题陈述说输入d = 0应该返回数字1,d = 1应该返回一个列向量,元素为1到n。Matlab d维乘法表?
理想情况下,我只是沿着d维创建一个1到n的矩阵,然后遍历每个元素设置它等于索引的乘积,但我不知道如何创建d维矩阵。
任何人都可以帮我解决这个问题吗?
我是新来的Matlab,我试图解决一个问题,涉及创建一个d维乘法表,其中每个边缘从1到n。问题陈述说输入d = 0应该返回数字1,d = 1应该返回一个列向量,元素为1到n。Matlab d维乘法表?
理想情况下,我只是沿着d维创建一个1到n的矩阵,然后遍历每个元素设置它等于索引的乘积,但我不知道如何创建d维矩阵。
任何人都可以帮我解决这个问题吗?
您可以重复使用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
非常感谢!我不熟悉shiftdim命令。 – user3020151