How can I load .mat files?
이전 댓글 표시
Hello, I have 3 .mat files and I want to measure feature importance. Following code works fine with .txt files but I am getting an error message with .mat files. I want to load all .mat files one by one and seperate predictors (X) and response variable (Y, the last column) for "fscchi2" function but I can't. How can I fix it?
matFiles = dir('Datasets/*.mat');
nFiles = length(matFiles);
for i = 1:nFiles
DataSet = load(matFiles(i).name);
X = DataSet(:,1:end-1);
Y = DataSet(:,end);
[~,Scores] = fscchi2(X,Y);
end
댓글 수: 4
Sahil Jain
2021년 10월 18일
What error message are you getting?
"Following code works fine with .txt files but I am getting an error message with .mat files."
Because .mat files get loaded into a scalar structure (not a numeric array), exactly as the LOAD documentation states:
You will need to access the appropriate fields of that structure:
I strongly recommend that you use a more appropriate tool for importing text files, e.g. READMATRIX, DLMREAD, etc.
"I couldn't find a way to seperate response column like I did with the .txt files"
The columns are in the structure field, not the structure itself. So you just need to access its field/s. If the fieldnames change (i.e. the data is very badly designed by someone who wants to make your life harder) then you can use dynamic fieldnames:
Rik showed this below.
Avoid loading directly into the workspace (as you show) unless you want to include latent bugs in your code.
Much simpler and more robust code would result if the data had been better designed (i.e. the same variable/field name).
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Signal Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!