Help me with for-loop
Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
Ältere Kommentare anzeigen
Hi,
I have RGB image and I need to study the similarity between the three layers of my image.
each layer is a matrix.
I need to patch each matrix and study the similarity between matrix 1 and 2 , matrix 1 and 3 , matrix 2 and 3, and record the result of each step in single matrix.
I will attach sample of my code and I need reduce the command in the code using foor loop.
Thanks
I = imread('l4_7.jpg'); I = imresize(I,[256 256]);
A1 = I (:,:,1);
A2 = I (:,:,2);
A3 = I (:,:,3);
imSzA1 = size(A1);
patchSzA1 = [64 64];
xIdxs = [1:patchSzA1(2):imSzA1(2) imSzA1(2)+1];
yIdxs = [1:patchSzA1(1):imSzA1(1) imSzA1(1)+1];
patchesA1 = cell(length(yIdxs)-1,length(xIdxs)-1);
for i = 1:length(yIdxs)-1
Isub = A1(yIdxs(i):yIdxs(i+1)-1,:);
for j = 1:length(xIdxs)-1
patchesA1{i,j} = Isub(:,xIdxs(j):xIdxs(j+1)-1);
end
end
imSzA2 = size(A2);
patchSzA2 = [64 64];
xIdxs = [1:patchSzA2(2):imSzA2(2) imSzA2(2)+1];
yIdxs = [1:patchSzA2(1):imSzA2(1) imSzA2(1)+1];
patchesA2 = cell(length(yIdxs)-1,length(xIdxs)-1);
for i = 1:length(yIdxs)-1
Isub = A2(yIdxs(i):yIdxs(i+1)-1,:);
for j = 1:length(xIdxs)-1
patchesA2{i,j} = Isub(:,xIdxs(j):xIdxs(j+1)-1);
end
end
A11 = double(patchesA1{1,1});
A12 = double(patchesA1{1,2});
A13 = double(patchesA1{1,3});
A14 = double(patchesA1{1,4});
A21 = double(patchesA1{2,1});
A22 = double(patchesA1{2,2});
A23 = double(patchesA1{2,3});
A24 = double(patchesA1{2,4});
A31 = double(patchesA1{3,1});
A32 = double(patchesA1{3,2});
A33 = double(patchesA1{3,3});
A34 = double(patchesA1{3,4});
A41 = double(patchesA1{4,1});
A42 = double(patchesA1{4,2});
A43 = double(patchesA1{4,3});
A44 = double(patchesA1{4,4});
%----------------------
B11 = double(patchesA2{1,1});
B12 = double(patchesA2{1,2});
B13 = double(patchesA2{1,3});
B14 = double(patchesA2{1,4});
B21 = double(patchesA2{2,1});
B22 = double(patchesA2{2,2});
B23 = double(patchesA2{2,3});
B24 = double(patchesA2{2,4});
B31 = double(patchesA2{3,1});
B32 = double(patchesA2{3,2});
B33 = double(patchesA2{3,3});
B34 = double(patchesA2{3,4});
B41 = double(patchesA2{4,1});
B42 = double(patchesA2{4,2});
B43 = double(patchesA2{4,3});
B44 = double(patchesA2{4,4});
%-----------
A = zeros(16,16);
A11 = reshape(A11,4096,1);
A12 = reshape(A12,4096,1);
A13 = reshape(A13,4096,1);
A14 = reshape(A14,4096,1);
A51 = reshape(A21,4096,1);
A61 = reshape(A22,4096,1);
A23 = reshape(A23,4096,1);
A24 = reshape(A24,4096,1);
A31 = reshape(A31,4096,1);
A32 = reshape(A32,4096,1);
A33 = reshape(A33,4096,1);
A34 = reshape(A34,4096,1);
A41 = reshape(A41,4096,1);
A42 = reshape(A42,4096,1);
A43 = reshape(A43,4096,1);
A44 = reshape(A44,4096,1);
B11 = reshape(B11,4096,1);
B12 = reshape(B12,4096,1);
B13 = reshape(B13,4096,1);
B14 = reshape(B14,4096,1);
B21 = reshape(B21,4096,1);
B22 = reshape(B22,4096,1);
B23 = reshape(B23,4096,1);
B24 = reshape(B24,4096,1);
B31 = reshape(B31,4096,1);
B32 = reshape(B32,4096,1);
B33 = reshape(B33,4096,1);
B34 = reshape(B34,4096,1);
B41 = reshape(B41,4096,1);
B42 = reshape(B42,4096,1);
B43 = reshape(B43,4096,1);
B44 = reshape(B44,4096,1);
%--------------
x = reshape(A11,4096,1);
y = reshape(B11,4096,1);
A(1,1) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B12,4096,1);
A(1,2) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B13,4096,1);
A(1,3) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B14,4096,1);
A(1,4) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B21,4096,1);
A(1,5) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B22,4096,1);
A(1,6) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B23,4096,1);
A(1,7) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B24,4096,1);
A(1,8) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B31,4096,1);
A(1,9) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B32,4096,1);
A(1,10) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B33,4096,1);
A(1,11) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B34,4096,1);
A(1,12) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B41,4096,1);
A(1,13) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B42,4096,1);
A(1,14) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B43,4096,1);
A(1,15) = getEcludianSimilarity(x,y);
x = reshape(A11,4096,1);
y = reshape(B44,4096,1);
A(1,16) = getEcludianSimilarity(x,y);
4 Kommentare
Walter Roberson
am 28 Mär. 2020
A = cellfun(@double, patchesA1);
getting out a cell array instead of getting out a number of variables.
but instead of doing that, why not
patchesA1{i,j} = double(Isub(:,xIdxs(j):xIdxs(j+1)-1));
Mohammad Alwardat
am 28 Mär. 2020
Walter Roberson
am 28 Mär. 2020
A11 = double(patchesA1{1,1});
A12 = double(patchesA1{1,2});
A13 = double(patchesA1{1,3});
A14 = double(patchesA1{1,4});
A21 = double(patchesA1{2,1});
A22 = double(patchesA1{2,2});
A23 = double(patchesA1{2,3});
A24 = double(patchesA1{2,4});
A31 = double(patchesA1{3,1});
A32 = double(patchesA1{3,2});
A33 = double(patchesA1{3,3});
A34 = double(patchesA1{3,4});
A41 = double(patchesA1{4,1});
A42 = double(patchesA1{4,2});
A43 = double(patchesA1{4,3});
A44 = double(patchesA1{4,4});
Gets replaced with
A = cellfun(@double, patchesA1);
getting out a cell array instead of getting out a number of variables.
but instead of doing that, why not
patchesA1{i,j} = double(Isub(:,xIdxs(j):xIdxs(j+1)-1));
in which case the code
A11 = double(patchesA1{1,1});
A12 = double(patchesA1{1,2});
A13 = double(patchesA1{1,3});
A14 = double(patchesA1{1,4});
A21 = double(patchesA1{2,1});
A22 = double(patchesA1{2,2});
A23 = double(patchesA1{2,3});
A24 = double(patchesA1{2,4});
A31 = double(patchesA1{3,1});
A32 = double(patchesA1{3,2});
A33 = double(patchesA1{3,3});
A34 = double(patchesA1{3,4});
A41 = double(patchesA1{4,1});
A42 = double(patchesA1{4,2});
A43 = double(patchesA1{4,3});
A44 = double(patchesA1{4,4});
would become
A = patchesA1;
Mohammad Alwardat
am 28 Mär. 2020
Antworten (0)
Diese Frage ist geschlossen.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!