2013-11-22 4 views
0

Я новичок в Matlab, и я пытаюсь решить проблему, связанную с созданием d-мерной таблицы умножения, где каждое ребро идет от 1 до n. В заявлении о проблеме говорится, что ввод d = 0 должен возвращать число 1, а d = 1 должен возвращать вектор-столбец с элементами от 1 до n.Matlab d-мерная таблица умножения?

В идеале я бы просто создал матрицу от 1 до n по d измерениям, а затем повторил для каждого элемента, устанавливая его равным произведению индексов, но я не знаю, как создать 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

Смежные вопросы