# For Loop Problem error

1 view (last 30 days)
shalaw faraj on 15 Jul 2019
Commented: shalaw faraj on 15 Jul 2019
[n,m]=size(img);
part1=img(1:n/2,1:m/2);
part2=img(1:n/2,(m/2)+1:end);
part3=img(n/2+1:end,1:m/2);
part4=img(n/2+1:end,m/2+1:end);
for i=1:4
subplot(2,2,i);
end

#### 1 Comment

Stephen Cobeldick on 15 Jul 2019
Simply use a cell array with indexing:
Putting numbers into variable names is a sign that you are doing something wrong. In most cases using indexing is simpler, neater, and much more efficient.

[n,m]=size(img);
part{1}=img(1:n/2,1:m/2);
part{2}=img(1:n/2,(m/2)+1:end);
part{3}=img(n/2+1:end,1:m/2);
part{4}=img(n/2+1:end,m/2+1:end);
for i=1:4
subplot(2,2,i);
imshow(part{i});
end

#### 1 Comment

shalaw faraj on 15 Jul 2019

Andrei Bobrov on 15 Jul 2019
[n,m]=size(img);
imgs = mat2cell(img,[n,n]/2,[m,m]/2)';
for ii = 1:4
subplot(2,2,ii);
imshow(imgs{ii});
end

shalaw faraj on 15 Jul 2019
your answre is greate, what about 4*4 and 8*8 and .... ?
very thanks.
Andrei Bobrov on 15 Jul 2019
k = 4;
[n,m]=size(img);
imgs = mat2cell(img, n/k*ones(1,k), m/k*ones(1,k))';
for ii = 1:k^2
subplot(k,k,ii);
imshow(imgs{ii});
end
shalaw faraj on 15 Jul 2019
I am very sorry, but I want to find (mean, max, min, std, entropy) for each block and using for but it is not working please help. thanks again.
[n,m]=size(img);
part{1}=img(1:n/2,1:m/2);
part{2}=img(1:n/2,(m/2)+1:end);
part{3}=img(n/2+1:end,1:m/2);
part{4}=img(n/2+1:end,m/2+1:end);
for i=1:4
subplot(2,2,i);
imshow(part{i});
Xmean{i}=mean(part{i});
Xmax{i}=max(part{i});
Xmin{i}=min(part{i});
Xstd{i}=std(part{i});
Xentropy{i}=entropy(part{i});
end