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

1 visualización (últimos 30 días)
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 comentarios
Jiri Hajek
Jiri Hajek el 5 de Dic. de 2022
Editada: Jiri Hajek el 5 de Dic. de 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 el 5 de Dic. de 2022
by "save all" I meant, I want to save all k number of matrices into a sigle coloumn vector.

Iniciar sesión para comentar.

Respuestas (3)

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

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

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

Categorías

Más información sobre Geology en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by