MATLAB Answers

Rita
0

How to get 2 variables form loading mat fille

Asked by Rita
on 5 Feb 2016
Latest activity Commented on by Star Strider
on 5 Feb 2016
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
y=load(['a',num2str(n),'_', num2str(k) '.mat']);
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.
Thanks in advance for your help.

  0 Comments

Sign in to comment.

Tags

2 Answers

Answer by Walter Roberson
on 5 Feb 2016
 Accepted Answer

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);

  0 Comments

Sign in to comment.


Answer by Star Strider
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
y=load(['a',num2str(n),'_', num2str(k) '.mat']);
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.

  2 Comments

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.
My pleasure.
I am glad I was able to solve your problem!

Sign in to comment.