MATLAB Answers

How can i put my output numbers in for loop to an array

27 views (last 30 days)
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 :/

  1 Comment

Joseph Cheng
Joseph Cheng on 17 Jun 2014
reformatted to be readable.
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

Sign in to comment.

Accepted Answer

Jason Nicholson
Jason Nicholson on 17 Jun 2014
This assumes the bitmaps are all the same size:
myArray = [img{:}];

  5 Comments

Show 2 older comments
Fatih Nurcin
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
Jason Nicholson on 18 Jun 2014
Can you give me some data so I can work out the issue?
Jason Nicholson
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.

More Answers (2)

Shravankumar P
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

  0 Comments

Sign in to comment.


ubaid haroon
ubaid haroon on 1 Mar 2017
what would you do if during the loop, those arrays are different lengths?

  0 Comments

Sign in to comment.

Sign in to answer this question.