Как быстро сгенерировать многомерный массив (или тензор) в Matlab? - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь создать 3d-массив с 3 индексами k=0,...,K-1, m'=0,...,M-1, m=0,...,M-1.Могу ли я сгенерировать такой 3d-массив, в котором элемент в позиции (k,m',m) равен k/K+m'-m некоторым быстрым способом?Мой текущий подход заключается в использовании трехслойного цикла for для расчета каждого элемента.Это немного неуклюже, и я считаю, что должен быть лучший путь.Так может ли кто-нибудь дать мне вдохновение?Благодарен.
Кстати другой вопрос.Можно ли сгенерировать 3d-массив из матрицы A и вектора b?Я имею в виду, что каждый элемент в b выполняет вычисления с A, чтобы мы могли получить 3d-массив?И как?

1 Ответ

0 голосов
/ 19 сентября 2018

Вам нужно создать 3 вектора:

 k  of size [1 x K x 1] ,
 mp of size [M x 1 x 1] and
 m  of size [1 x 1 x M].

Используя неявное расширение , вы можете создать нужный массив:

K = 5;
M = 7;

k  = 0:K-1;
mp = (0:M-1).'
m  = reshape(0:M-1,1,1,[]);

result = k/K+mp-m;

Обратите внимание, что он более эффективенчем ndgrid решение.

...