need help for take data from loop

1 view (last 30 days)
christiano doni on 6 Apr 2015
Commented: christiano doni on 6 Apr 2015
I have scrip data like this
clear all;close all;clc
a1=double(c1);
a1=reshape(a1,2229000,[]);
a2=double(c2);
a2=reshape(a2,2229000,[]);
a3=double(c3);
a3=reshape(a3,2229000,[]);
and I have matrix
a1=(2229000,3); a2=(2229000,3); a3=(2229000,3);
and i want to make 3 matrix data like this
red=[a1(:,1),a2(:,1),a3(:,1)]
green=[a1(:,2),a2(:,2),a3(:,2)]
blue=[a1(:,3),a2(:,3),a3(:,3)]
*my questions is how to make loop for red, grean and blue because data a1, a2 until a100, i try *
for i=1:1:3; red(:,i)=['a'num2str(i)(:,1)]; end
but its not working here

Philipp Maier on 6 Apr 2015
Edited: Philipp Maier on 6 Apr 2015
The eval function can be used to execute the MATLAB expression. For example:
for i=1:1:3;
red(:,i)= eval(['a' num2str(i) '(:,1)'])';
end
Since I do not have the PNG-files that you are reading , I tested the code with three random variables:
a1 = rand(2229000,3);
a2 = rand(2229000,3);
a3 = rand(2229000,3);
christiano doni on 6 Apr 2015
ah ...thank you sir...it's working here

Jan on 6 Apr 2015
No, do not do this. It might work in this specific case, but it is in general an evil method and it produces more troubles than it solves. The problem is discussed several times a day and therefore you find it in the frequently asked questions also: http://www.mathworks.com/matlabcentral/answers/57445-faq-how-can-i-create-variables-a1-a2-a10-in-a-loop .
christiano doni on 6 Apr 2015