Если у вас есть массив из цикла for

for a =1:3;
    for b=1:3;
        for c=1:3;
            disp([a(:) b(:) c(:)])

        end
    end
end

И вы хотите разделить каждый столбец вывода

Чтобы разделить каждый столбец, вам нужен этот код: предполагая, что данные хранятся в массиве 'A':

yy = A(:,1)
yx = A(:,2)
yz = A(:,3)
and so on...

Но что, если вы не знаете размер своего массива или у вас есть массив m x n? какой общий код для разделения столбца? Благодарность

1
Raldenors 27 Фев 2015 в 05:44

2 ответа

Лучший ответ

Сделать это можно так:

y = [1  1   1   1   1
1   2   3   1   1   
1   0   2   2   1]


[m,n] = size(y)
for i=1:n
   C{i} = y(:,i);
end

Теперь вы можете получить доступ к каждому столбцу через C(1), C(2), C(3) и т. Д. C выглядит так:

C =
{
  [1,1] =
     1
     1
     1
  [1,2] =
     1
     2
     0
  [1,3] = 
     1
     3
     2
}

Вывод только C(2):

ans =    
{
  [1,1] =
     1   
     2   
     0   
}

Тем не менее, вероятно, лучше придерживаться кода, который нужен для прямого доступа к столбцу из матрицы (y(:,1)), вместо того, чтобы создавать набор динамических переменных.

1
Andy 27 Фев 2015 в 03:16

Как бы вы разделили эти столбцы? Не рекомендуется называть их y1, y2, ....

Если вы хотите выбрать i-й столбец, просто используйте y (:, i). Это намного проще в использовании.

0
Meng Wang 27 Фев 2015 в 02:49