Просто измените матрицу / вертик в одну строку:
v = reshape(v,1, [])
Это также оставит вектор правильной формы без изменений.
Если перейти к документации по reshape
, 1
означает 1 строку, а []
означает столько столбцов, сколько необходимо, учитывая размер v
.
Полная функция:
function v = RowIt(v)
v = reshape(v,1,[]);
end
Сравнение с @Adriaan ответом
Reshape
версия:
v = rand(5000*5000, 1);
tic;
for i=1:100000
b = reshape(v,1, []);
end
toc
Elapsed time is 0.347047 seconds.
(:).'
версия: этот ответ
v = rand(5000*5000, 1);
tic
for i=1:100000
b = v(:).';
end
toc
Elapsed time is 0.082710 seconds
Итак, решение @ Adriaan явно быстрее, возможно, из-за перегрузки вызова функции. Вы должны знать, что никакие данные не копируются во время этой операции, кроме случаев, когда вы изменяете их (MATLAB копирует при изменении), так что в любом случае это действительно быстро.
Преимущество заключается в изменении формы, когда вам нужно настроить что-то вроде:
a = rand(10, 10)
size(reshape(a, 2,[]))
ans =
2 50