Векторизация в MATLAB - PullRequest
       7

Векторизация в MATLAB

1 голос
/ 02 марта 2011

Я пытаюсь создать вектор размером 121x101 таким образом, чтобы i-й столбец состоял из V_t*e, где V_t = 1000*10^((i-1)/20) и e - это длинный столбец из 121 столбцов.

Ясно, что i будет варьироваться от 1 до 101 миллиона, но как мне применить это к матрице, не получая только окончательное значение в результатах (применяя это к каждому столбцу без повторения команд)?

1 Ответ

2 голосов
/ 02 марта 2011

По вашему вопросу, похоже, что все строки одинаковы. Таким образом, вы можете просто вычислить одну строку, используя REPMAT как

iRow = 1:101;
V_t = 1000*10.^((iRow-1)/20);
V_te = repmat(V_t,121,1);

Если вы хотите, чтобы e было 1 в строке 1, 2 в строке 2 и т. Д., Вы можете использовать NDGRID для создания двух массивов одинакового размера в качестве выходных данных, которые содержат значения e и i для каждого элемента (i,j) вывода

[ee,ii] = ndgrid(1:121,1:101);
V_te = 1000*10.^((i-1)/20) .* ee;

или вы можете использовать BSXFUN , чтобы выполнить расширение e и i для вас

iRow = 1:101;
V_t = 1000*10.^((iRow-1)/20);
V_te = bsxfun(@times,V_t,(1:121)');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...