Asked by Fatih Nurcin
on 17 Jun 2014

z=('/Users/fatihnurcin/Desktop/Dandnd/dilated')

cd(z)

list = dir('*.bmp');

for i = 1:length(list)

img{i} = imread(list(i).name);

end

for i = 1:length(list)

a=img{i};

b=im2bw(a,0.20);

figure

subplot(1,3,1);

imshow(b)

c=b(120,100:250);

subplot(1,3,3);

plot(c);

for n=1:length(c);

d= padarray(c,[0 1],'replicate','post');

e(n)=d(n)-d(n+1);

left=find(e==1);

right=find(e==-1);

f=right-left;

end

f

end

This is my whole code, it takes a row from a binary photo and tries to find where its black and where its not and calculate the black area so i want to ask how can i put my outputs(outputs are numbers calculated due to black arena) in an array, i couldn't do it by adding (n) to left and right,

left(n)=find(e(n)==1);

right(n)=find(e(n)==-1);

f(n)=right(n)-left(n);

I need an urgent help , i need to deliver my project in 2 days :/

Answer by Jason Nicholson
on 17 Jun 2014

Accepted Answer

This assumes the bitmaps are all the same size:

myArray = [img{:}];

Fatih Nurcin
on 18 Jun 2014

it doesn't help , because as a output i have number not image, i need to put numbers in an array

Jason Nicholson
on 18 Jun 2014

Can you give me some data so I can work out the issue?

Jason Nicholson
on 18 Jun 2014

Honestly, it is clear to me you don't really know what you are doing with MATLAB. After this project is done, you need to read up "getting started" documents for MATLAB. The code below is ugly but works. I believe it is what you want as well.

list = dir('*.bmp');

% preallocate cell array

img = cell(length(list),1);

f = cell(length(list), 250-100);

for i = 1:length(list)

img{i} = imread(list(i).name);

end

for i = 1:length(list)

a=img{i};

b=im2bw(a,0.20);

figure;

subplot(1,3,1);

imshow(b)

c=b(120,100:250);

subplot(1,3,3);

plot(c);

for n=1:length(c);

d= padarray(c,[0 1],'replicate','post');

e(n)=d(n)-d(n+1);

left=find(e==1);

right=find(e==-1);

f{i, n} = right-left;

end

end

Sign in to comment.

Answer by Shravankumar P
on 18 Jun 2014

I guess you may go for index mapping. I just give you Idea try this once

for m=1:4

for n=1:4

X(m,n)=x(4*(m-1)+n);

end

end

x is the input which of your interest to put into an array X

Sign in to comment.

Answer by ubaid haroon
on 1 Mar 2017

what would you do if during the loop, those arrays are different lengths?

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## Joseph Cheng (view profile)

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/134920-how-can-i-put-my-output-numbers-in-for-loop-to-an-array#comment_220669

Sign in to comment.