2015-02-27 2 views
1

, если у вас есть массив из для циклаКак отделить столбцы в MATLAB

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... 

, но что, если вы не знаете размер вашего массива, или если у вас есть MXN массив? каков общий код для разделения столбца? спасибо

ответ

1

Вы можете сделать это следующим образом:

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)), вместо создания кучи динамических переменных.

+0

, но она автоматически не отображает все разделяемые колонки. – Raldenors

+0

отлично помогает спасибо :) – Raldenors

0

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

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

+0

извините, это просто представление ... – Raldenors

+0

@Raldenors Я пришел в такие ситуации раньше: я получаю несколько векторов с одинаковой длиной n и хочу вернуть их обратно из функции. Поэтому я объединил их в матрицу. На мой взгляд, неплохо представить «коллекцию вектора» с матрицей. –

+0

не могли бы вы привести пример? спасибо – Raldenors

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