how to save workspace variables with the same name they have in work space
17 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
i have lots of variables in the workspace and want to save those with the prefix "PSD", also I want them to have the same name they have now or even better without the "PSD" prefix.
i tried to use:
vars = work PSD*
0 Kommentare
Antworten (2)
mark li
am 14 Apr. 2022
Hello! There is a simple demo.
%%
%test data
clear;
PSD_a = 1;
PSD_b = 2;
PSD_c =2;
a = 1;
%%
str_set = [];
Save_name = '''a.mat'''; %the save file name
Var_name = who('PSD*');
for index = 1 : length(Var_name)
str = Var_name{index};
str_new = str(5:end); %the Value 5 may be changed properly
eval([str_new '=' str ';'])
str_set = [ str_set ',' '''' str_new ''''];
end
eval([ 'save(' Save_name str_set ')'])
%%
%clear data
clear_var = ['clear(''' str_set(3:end-1) ''')' ];
eval(clear_var)
0 Kommentare
Stephen23
am 14 Apr. 2022
Bearbeitet: Stephen23
am 14 Apr. 2022
A much simpler approach ist use SAVE's regular expression syntax:
save('mydata.mat', '-regexp','^PSD')
See the examples here: https://www.mathworks.com/help/matlab/ref/save.html#btox10b-1-variables
There is no point in making your code more complex than that.
Renaming would be best done by LOADing and changing the fieldnames, for example:
S = load('mydata.mat')
and then use dynamic fieldnames and RMFIELD.
Note that filtering variables by their names implies that you have forced meta-data into the variable names, which is generally very poor data design which will make acessing and processing your data slow, complex, and inefficient.
1 Kommentar
Siehe auch
Kategorien
Mehr zu File Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!