Squeezing a two-dimensional array into a one-dimensional array without using a FOR loop

35 Ansichten (letzte 30 Tage)
Hi,
I would like to be able to squeeze a two-dimensional array into a one-dimensional array. Basically, I would like to be able to "erase" the rows of a two-dimensional array. Is there a straight forward way to do this?
As a simple example, suppose that I have an two-dimensional array A:
A=[1 2 3 4; 5 6 7 8; 9 10 11 12];
I would like to have a function that will produce the following one-dimensional array B:
B=[1 2 3 4 5 6 7 8 9 10 11 12];
I can do the following:
A=[1 2 3 4; 5 6 7 8; 9 10 11 12];
B=zeros(1,size(A,1)*size(A,2));
k=1;
for i=1:size(A,1)
for j=1:size(A,2)
B(k)=A(i,j);
k=k+1;
end
end
which I think is a correct algorithm. But, is there a better way to do this, perhaps without using a FOR loop?
Thank you very much for your time.
Andrew DeYoung
Carnegie Mellon University

Akzeptierte Antwort

Paulo Silva
Paulo Silva am 29 Jun. 2011
doc reshape
A=[1 2 3 4; 5 6 7 8; 9 10 11 12]
reshape(A',1,numel(A))

Weitere Antworten (1)

Viraj
Viraj am 23 Feb. 2023
A=[1 2 3 4; 5 6 7 8; 9 10 11 12];
B=zeros(1,size(A,1)*size(A,2));
k=1;
for i=1:size(A,1)
for j=1:size(A,2)
B(k)=A(i,j);
k=k+1;
end
end

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by