How to convert matrices of different sizes in a for loop into a single column vector?

1 view (last 30 days)
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
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];

Sign in to comment.

Answers (3)

Jan
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
MFK on 16 Jan 2023
for k = 1:nLevels
...
Phase = acos(subband./amp);
re_shaped_Phas{k,1}=reshape(Phase,1,[]);
end

Bruno Luong
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 Arduino Hardware 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!