Extract variable from .mat files

37 views (last 30 days)
Haresh Kumar
Haresh Kumar on 9 Nov 2020
Commented: Stephen23 on 13 Nov 2020
Hello,
I have mutiple .mat files which I am running in a for loop. I want to extract the data from the specific variable of .mat file. I tried .variable commond, but it didnot work. Could you please suggest me which commond will I use in this case?.
Here is the attached code:
S = dir('*.mat');
LT= [];
for i=1:length(S)
disp(S(i).name)
T = readtable((S(i).name.(A));
Where, A is the vaiable from which I want to extract the data and all .mat files are in tabular format.
Br,
Haresh Kumar
  4 Comments
Haresh Kumar
Haresh Kumar on 9 Nov 2020
I want to read the frrom one specific variable of table (which is in .mat file) and then want to apply the rest of algorithm.
Stephen23
Stephen23 on 9 Nov 2020
"...all .mat files are in tabular format."
Please upload a sample file by clicking the paperclip button.

Sign in to comment.

Answers (2)

Rik
Rik on 9 Nov 2020
Edited: Rik on 9 Nov 2020
I think I understand what you mean. You will have to use load to load a variable from a mat file:
S = dir('*.mat');
LT= [];
for n=1:length(S)
A=load(fullfile(S(n).folder,S(n).name));
T=A.A;
%remainder of your code here
end
  4 Comments
Stephen23
Stephen23 on 9 Nov 2020
@Rik: probably one of those S variables should be renamed.
Rik
Rik on 9 Nov 2020
Thanks for the comment. I guess I shouldn't edit code on autopilot (I always load to S). I'll edit my answer.

Sign in to comment.


Stephen23
Stephen23 on 9 Nov 2020
D = 'absolute/relative path to the folder where the files are saved';
S = dir(fullfile(D,'*.mat'));
for k = 1:numel(S)
F = fullfile(D,S(k).name);
T = load(F);
T.A
end
  4 Comments
Haresh Kumar
Haresh Kumar on 13 Nov 2020
Hello,
Thank you for providing the breif information about this commond. I also want to delete the -ve entries from variable (A) before applying the rest of code and for that I am using this commond:
K=T.A;
If K <0
K=[]
else
K= K
But it doesnot work. Could you please guide me how can I solve this problem?.
Br,
Haresh Kumar
Stephen23
Stephen23 on 13 Nov 2020
The MATLAB way is to use logical indexing:
K = T.A;
K(K<0) = []

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!