How do I rename variables from workspace for multiple matfiles?
Show older comments


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!
Accepted Answer
More Answers (1)
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 Comments
KuanTing Wu
on 6 Apr 2022
Belén
on 11 Jul 2023
There seems to be a typo, it should be:
fn=fieldnames(Sin);
Rik
on 12 Jul 2023
Thank you for catching this. I have edited my answer.
Categories
Find more on Whos in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!