# convert matrix in single column

936 次查看（过去 30 天）
Gaetano Sciacovelli 2012-4-18

Hi, I have to convert a matrix in one column vector composed of all the columns of the original matrix. How can I do this? Thanks
##### 5 个评论显示 4更早的评论隐藏 4更早的评论
Image Analyst 2020-4-9
You said "I have to convert a matrix in one column vector composed of all the columns of the original matrix." I thought you meant you had a column vector and had to convert it to a matrix having the same number of columns as the original matrix from where the column vector came. In other words, I thought you meant "I have to convert a matrix of one column vector INTO ONE composed of all the columns of the original matrix."
Seeing the answer you accepted, it appears that you actually meant "I have to convert a matrix INTO a one column vector that is composed of all the columns of the original matrix." Leaving out seemingly minor words completely changes the interpretation of the question, as does their placement in the sentence.

### 采纳的回答

Andrei Bobrov 2012-4-18
yourvector = yourmatrix(:);
##### 10 个评论显示 9更早的评论隐藏 9更早的评论
Image Analyst 2022-7-14

@rishika yadav you can use interp2 to interpolate a different height:
m = reshape(1:18, [], 3) % Create 6 row by 3 column sample data
[oldHeight, columns] = size(m)
% Make the matrix taller by interpolating.
newHeight = 8;
[xq,yq] = meshgrid(1:columns, linspace(1, oldHeight, newHeight));
mTaller = interp2(m, xq, yq)
fprintf('The size of mTaller is %d rows by %d columns.\n\n', size(mTaller, 1), size(mTaller, 2))
% Make the matrix taller by interpolating.
newHeight = 3;
[xq,yq] = meshgrid(1:columns, linspace(1, oldHeight, newHeight));
mShorter = interp2(m, xq, yq)
fprintf('The size of mShorter is %d rows by %d columns.\n', size(mShorter, 1), size(mShorter, 2))
The first/top and last/bottom rows will have the same values, and more, or fewer, rows will be interpolated in between the top row and bottom row so that you have your new desired height.

### 更多回答（4 个）

Kyril Kaufmann 2020-4-26
For a more algorithmic solution:
% From matrix to vector
N = 10;
mat1 = rand(N);
vec1 = zeros(N*N,1);
for i=1:N
for j=1:N
vec1((i-1)*N + j) = mat1(i,j);
end
end
% From vector to matrix
N = 10;
vec2 = rand(N*N,1);
mat2 = zeros(N);
for i=1:N
for j=1:N
mat2(i,j) = vec2((i-1)*N + j);
end
end
##### 0 个评论显示 -1更早的评论隐藏 -1更早的评论

Image Analyst 2012-4-18
If your column vector was "composed of all the columns of the original matrix", then use the reshape() command to turn it from a column vector back into the original 2D matrix.
matrix2D = reshape(columnVector, [rows columns]);
(The converse, how to get the column vector in the first place (what you may have done to get your vector) is accomplished like this columnVector = fullMatrix(:).)
##### 7 个评论显示 6更早的评论隐藏 6更早的评论
James Tursa 2019-10-25

Rifat Hossain 2016-12-15
columnvector=matrix(:) this work fine
##### 0 个评论显示 -1更早的评论隐藏 -1更早的评论

AMIR KHFAGI 2020-3-23
Hi, I have to convert one column vector to a matrix in matlab. How can I do this?
##### 1 个评论显示 无隐藏 无
Shuyun Yuan 2020-4-7
reshape function

### 类别

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!