Extract variable from .mat files
显示 更早的评论
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 个评论
Rik
2020-11-9
What exactly do you want to do?
Haresh Kumar
2020-11-9
Haresh Kumar
2020-11-9
Stephen23
2020-11-9
"...all .mat files are in tabular format."
Please upload a sample file by clicking the paperclip button.
回答(2 个)
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 个评论
Haresh Kumar
2020-11-9
Rik
2020-11-9
Then you're running an older release of Matlab (or Octave), which you should have mentioned. You can replace that part with the full or relative path to the mat files.
Stephen23
2020-11-9
@Rik: probably one of those S variables should be renamed.
Rik
2020-11-9
Thanks for the comment. I guess I shouldn't edit code on autopilot (I always load to S). I'll edit my answer.
Stephen23
2020-11-9
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 个评论
Haresh Kumar
2020-11-10
Stephen23
2020-11-10
"I couldnot understand T.A commond..."
T is a scalar structure containing the data imported from the mat file, where each variable in the mat file is stored in one field of the structure. You wrote in your original question that "...A is the vaiable from which I want to extract the data...", so accordingly I used the field A to access that data. If the variable actually has a different name than what you described in your question, then of course you would have to use that name instead.
Haresh Kumar
2020-11-13
Stephen23
2020-11-13
The MATLAB way is to use logical indexing:
K = T.A;
K(K<0) = []
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!