Filter löschen
Filter löschen

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

3 Ansichten (letzte 30 Tage)
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 Kommentare
Jiri Hajek
Jiri Hajek am 5 Dez. 2022
Bearbeitet: Jiri Hajek am 5 Dez. 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
Anisia Anil am 5 Dez. 2022
by "save all" I meant, I want to save all k number of matrices into a sigle coloumn vector.

Melden Sie sich an, um zu kommentieren.

Antworten (3)

Jan
Jan am 5 Dez. 2022
...
PhaseC = cell(1, nLevels);
for k = 1:nLevels
...
PhaseC{k} = acos(subband./amp);
end
Phase = cat(2, PhaseC{:}); % Maybe cat(1, ...

MFK
MFK am 16 Jan. 2023
for k = 1:nLevels
...
Phase = acos(subband./amp);
re_shaped_Phas{k,1}=reshape(Phase,1,[]);
end

Bruno Luong
Bruno Luong am 16 Jan. 2023
...
PhaseC = cell(1, nLevels);
for k = 1:nLevels
...
Phase = acos(subband./amp);
PhaseC{k} = Phase(:);
end
Phase = cat(1, PhaseC{:});

Kategorien

Mehr zu Arduino Hardware finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by