Собрать матрицу - PullRequest
       19

Собрать матрицу

0 голосов
/ 05 января 2012

Я хочу извлечь матрицы из матрицы B на узлах, которые я определяю как perm(:,i), которые являются матрицей i-го столбца emp, и я хочу вычислить A1= B(perm(:,1),perm(:,1)), A2=B(perm(:,2),perm(:,2)), что делает цикл таким что:

for i=1:n
    I got A1, A2 and so on –

Ответы [ 2 ]

1 голос
/ 06 января 2012

Из того, что я могу различить, кажется, что вы хотите динамически извлекать субматрицу из матрицы B в соответствии с матрицей perms.Кажется, ваша проблема в том, что вы не можете сделать это в цикле, потому что вы не знаете, как динамически создавать матрицы.Ваше решение - создать ячейку и ввести каждую субматрицу в ячейку.Таким образом, если A - ваша клетка, то

A=cell(1,N);

for i=1:N
  A{i}=B(perm(:,i),perm(:,i));
end

Вы можете получить матрицу Ai из ячейки, используя

Ai=A{i};  %notice the curly braces {}
0 голосов
/ 06 января 2012

Если вам действительно нужны переменные с именами A1, A2 и & c, вы можете использовать eval:

for i = 1:N
  eval(['A' num2str(i) ' = B(perm(:,i),perm(:,i))']);
end

Однако это, вероятно, не очень хорошая идея, и вам лучше использовать ячейки, как показано @Хорхе.Клетки могут содержать что угодно и гораздо удобнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...