How to convert matrices of different sizes in a for loop into a single column vector?
Show older comments
A = imread('Ish.JPG');
A = im2single(squeeze(mean(A,3)));
A = im2double(A);
[pyrRef,pind] = buildLpyr(A,'auto');
nLevels = 7;
kernelx = [0.0, 0.0, 0.0; 0.5, 0.0, -0.5; 0.0, 0.0, 0.0];
kernely = [0.0, 0.5, 0.0; 0.0, 0.0, 0.0; 0.0, -0.5, 0.0];
for k = 1:nLevels
subband = pyrBand(pyrRef, pind, k);
rx(k) = conv2(subband(k),kernelx);
ry(k) = conv2(subband(k),kernely);
amp = sqrt(subband.^2 + rx(k).^2 + ry(k).^2);
Phase = acos(subband./amp);
end
Here, the value of "Phase" is a matrix with varying dimension at each iteration of 'k'. How do I save all the values in these k matrices into a single coloumn vector?
2 Comments
Jiri Hajek
on 5 Dec 2022
Edited: Jiri Hajek
on 5 Dec 2022
Hi, you can make column vector from a matrix by using linear indexing
columnVector = Array(:);
And if by "save all" you mean to concatenate these vectors, then its possible simply by using brackets:
concatenatedVectors = [firstVector; secondVector];
Anisia Anil
on 5 Dec 2022
Answers (3)
Jan
on 5 Dec 2022
...
PhaseC = cell(1, nLevels);
for k = 1:nLevels
...
PhaseC{k} = acos(subband./amp);
end
Phase = cat(2, PhaseC{:}); % Maybe cat(1, ...
MFK
on 16 Jan 2023
for k = 1:nLevels
...
Phase = acos(subband./amp);
re_shaped_Phas{k,1}=reshape(Phase,1,[]);
end
Bruno Luong
on 16 Jan 2023
...
PhaseC = cell(1, nLevels);
for k = 1:nLevels
...
Phase = acos(subband./amp);
PhaseC{k} = Phase(:);
end
Phase = cat(1, PhaseC{:});
Categories
Find more on Matrices and Arrays 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!