How to get 2 variables form loading mat fille

Rita (view profile)

on 5 Feb 2016
Latest activity Commented on by Star Strider

Star Strider (view profile)

on 5 Feb 2016
Accepted Answer by Walter Roberson

Walter Roberson (view profile)

I want to load lots of mat file like (a1_2.mat......a50_40.mat) and take two variables(c,d) from each mat file and then put variables in a matrix like this.[c1 d1; c2 d2.....]
for n = 1 : 50
for k=1:40
c = y.c;% load first variable
d=y.d; % load second variable and
all(:,1)=c;
all(:,2)=d;
end
end
but I can't get the final matrix correctly.

Tags

Answer by Walter Roberson

Walter Roberson (view profile)

on 5 Feb 2016

for n = 1 : 50
for k = 1:40
y = load(['a',num2str(n),'_', num2str(k) '.mat']);
c = y.c;% load first variable
d = y.d; % load second variable and
all_vals(n,k,1) = c;
all_vals(n,k,2) = d;
end
end
all_vals = reshape(all_vals, [], 2);

Answer by Star Strider

Star Strider (view profile)

on 5 Feb 2016

Assuming that you cannot pre-allocate your matrix, something like this could work:
all_vars = [];
for n = 1 : 50
for k=1:40
c = y.c;% load first variable
d = y.d; % load second variable and
all_vars = [all_vars; [c d]];
end
end
I changed the name of your matrix, because all is a function name you could need later in your code. Naming variables the same as built-in MATLAB functions is called ‘overshadowing’. MATLAB will use the variable instead of the function afterwards, making the function useless until you change the variable name.

Rita

Rita (view profile)

on 5 Feb 2016
Thanks Walter for your prompt response.unfortunetly my results had 30 rows of zero number. Thanks Star strider for your explanation.and the result is perfect.
Star Strider

Star Strider (view profile)

on 5 Feb 2016
My pleasure.
I am glad I was able to solve your problem!