How do I rename variables from workspace for multiple matfiles?

조회 수: 36 (최근 30일)
KuanTing Wu
KuanTing Wu 2022년 3월 24일
댓글: Rik 2023년 7월 12일
Hello there! I am trying renaming those variables, e.g., 'img' to 'img_ldct' and 'lab' to 'lab_ldct', and making these two matfiles' variable names become same.
img_ldct=img;
clear('img')
I have tried the above code and it worked, but the new variable name did not saved in matfiles,which meant when I clicked the workspace later, the variable name was still 'img', not 'img_ldct'. How can I change variable names correctly? Also, is it possible to rename multiple matfiles automatically with the same name-changing rule, e.g., adding '_ldct' after original variable names?
Please suggest and thank you for helping!

채택된 답변

Les Beckham
Les Beckham 2022년 3월 24일
clearvars
load('filename.mat') % load data that you want to change (replace filename with actual name of your file)
img_ldct=img; % do the rename
clear('img')
save('matfile1.mat') % save the result with the change
% repeat for any other mat files that you want to make changes to
  댓글 수: 1
KuanTing Wu
KuanTing Wu 2022년 3월 25일
Thank you! I really appreciate your suggestion and it works! May I ask how should I use a loop to rename multiple matfiles automatically with the same name-changing rule, e.g., adding '_ldct' after original variable names?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Rik
Rik 2022년 3월 25일
편집: Rik 2023년 7월 12일
With the syntax Les posted it is not possible to apply this to multiple mat files and variables automatically, which is one of the reasons to load to a struct instead. That way it is obvious where variables are coming from and you can use fieldnames to get all the variable names.
rename_variables('filename.mat','_ldct')
function rename_variables(filename,suffix)
Sin=load(filename);
Sout=struct;
fn=fieldnames(Sin);
for n=1:numel(fn)
Sout.([fn{n} suffix])=Sin.(fn{n});
end
save(filename,'-struct','Sout')
end
I will leave it as an excersize to you to write comments and documentation for this function.
  댓글 수: 4
Belén
Belén 2023년 7월 11일
There seems to be a typo, it should be:
fn=fieldnames(Sin);
Rik
Rik 2023년 7월 12일
Thank you for catching this. I have edited my answer.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Workspace Variables and MAT-Files에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by