2013-05-16 3 views
16

Скажем, у меня есть матрицу a = [1 2 3 4 5 6];, как мне изменить его форму в строчном образом, например reshape(a, 2, 3) с получениемReshape MATLAB, вектор в строчном образом

1 2 3 
4 5 6 

, а не по столбцам результата по умолчанию производства MATLAB из:

1 3 5 
2 4 6 

Я считаю, что это тривиальная задача, которая, вероятно, имеет встроенную функцию для достижения этой цели. Я уже реализовал функцию, которая делает это отлично ... однако, есть ли более короткий, более аккуратный и более способ MATLAB? Благодарю.

function y = reshape2(x, m, n) 
    y = zeros(m, n); 

    ix = 0; 
    for i = 1:m 
    for j = 1:n 
     ix = ix + 1; 
     y(i, j) = x(ix); 
    end 
    end 
end 

ответ

3

Общий способ изменения формы в m*n матрице А к p*k матрице B в строчном образом, является:

c=reshape(A',1,m*n) 
B=reshape(c,k,p)' 
example: m=3 n=4 , p=6, q=2 
A=[1 2 3 4; 5 6 7 8; 9 10 11 12] 
c=[1 2 3 4 5 6 7 8 9 10 11 12] 
B=[1 2 ; 3 4; 5 6; 7 8; 9 10; 11 12] 
1

Это действительно изменить форму (А», смещ_по_столбцы, строка) «

(перекроить (а», 3, 2)»в вашем примере)

+0

Приветствия для удаления свой вопрос прямо сейчас - я только что провел 10 минут подготовки ответа , Возможно, я был полезен кому-то другому. (Я думал, что это хороший вопрос). –

+0

О, я снова отправлю вопрос, а затем @MatthewTaylor – Mortada

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