我是Matlab的新手,我正在尝试解决一个涉及创建d维乘法表的问题,其中每个边从1变为n。问题陈述说输入d = 0应返回数字1,d = 1应返回带有元素1到n的列向量。
理想情况下,我只是沿着d维创建一个1到n的矩阵,然后对每个元素进行迭代设置,它等于索引的乘积,但我不知道如何创建d维矩阵。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分: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