How can i put my output numbers in for loop to an array
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Fatih Nurcin
il 17 Giu 2014
Risposto: ubaid haroon
il 1 Mar 2017
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 Commento
Joseph Cheng
il 17 Giu 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
Risposta accettata
Jason Nicholson
il 17 Giu 2014
This assumes the bitmaps are all the same size:
myArray = [img{:}];
5 Commenti
Jason Nicholson
il 18 Giu 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
Più risposte (2)
Shravankumar P
il 18 Giu 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 Commenti
ubaid haroon
il 1 Mar 2017
what would you do if during the loop, those arrays are different lengths?
0 Commenti
Vedere anche
Categorie
Scopri di più su Digital Filter Design in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!