2011-01-18 2 views
3

я в настоящее время:Matlab: как изменить способ хранения матрицы? от 1x1x3 до 1x3?

val(:,:,1) = 

    0.7216 

val(:,:,2) = 

    0.7216 

val(:,:,3) = 

    0.7216 

Но я хочу

0.7216, 0.716, 0.721. 

Какие операции я могу сделать, чтобы сделать это?

+0

Номера, которые вы хотите, фактически не соответствуют значениям в val, является ли это ошибкой или требуется некоторая другая обработка. – Adrian

+0

Возможный дубликат [Как изменить размер матрицы в MATLAB?] (Http://stackoverflow.com/questions/793574/how-do-i-resize-a-matrix-in-matlab) – gnovice

+0

Согласованный аналогичный вопрос, но тонкий различия, упомянутый дубликат говорит о переделке матрицы, в то время как это больше касается удаления измерений. Хорошо, вы можете утверждать, что это одно и то же, но для тех, кто ищет ответ, они могут задавать несколько разные вопросы, поэтому не могут найти вопрос об изменении размера. Возможно, дублирующий вопрос может быть обновлен, чтобы охватить «оба» сценария. – Adrian

ответ

3

reshape функция будет делать трюк здесь:

% Arrange the elements of val into a 1x3 array 
val = reshape(val, [1 3]); 

Потому что вы преобразования в вектор-строка, следующий синтаксис также будет работать:

val = val(:)'; 

Поскольку val(:) создает вектор-столбец, а оператор транспонирования ', то transpo ses, что вектор-столбец в вектор-строку.

1
val = val(:)'; 

Это должно сделать трюк.

(:) преобразует его в колонку.

' будет транспонировать в ряд

+0

val = val (:); создаст вектор-столбец 3x1, а не вектор строки 1x3, вопрос будет после. –

4

Функция squeeze другой вариант, если у вас есть различное число элементов в третьем измерении

>> squeeze(val)' 
ans = 
    0.7216 0.7216 0.7216 

при условии, что вы хотите, чтобы эти цифры - необходимые номера в вашем вопросе фактически не совпадают значения из матрица val.

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