Loop code for images with x1, y1, z1 variables

hi all. i cannot solve this issue. briefly, i have a code for image manipulation, however i cannot solve putting it into a loop. for 7 photos in the images folder, i want to read it one by one and after manipulation i want to store the outputs in x1,x2,...x7 , y1,y2,...y7 , z1,z2,...z7. significant part of the code can be seen below.
thank you so much in advance.
for k=1:7
i = imread(sprintf('images/a%d.jpg',k));
.....
im = rgb2gray(i);
....
eval(['x' num2str(i)='double(im)']);
eval(['y' num2str(i)='x(:)']);
eval(['z' num2str(i)='hist(y)']);
end
....
i have also tried the code below with sprintf instead of num2str and yet it haven't worked either.
eval(sprintf('x%d = double(im)', i));
eval(sprintf('y%d = x%d(:)', i));
eval(sprintf('z%d = hist(y%d)', i));

 Accepted Answer

i has not been defined yet when you did:
i = imread(sprintf('images/a%d.jpg',i));
perhaps you meant
rgbImage = imread(sprintf('images/a%d.jpg', k));

2 Comments

sorry i've misspelled it . in my code, correct line is:
i = imread(sprintf('images/a%d.jpg',k));
the main problem is in the loop.thank you
You don't want to create variables z1, z2, etc. See the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F Make an array instead. You also don't need to use eval() - I never ever use it or need to.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!