【发布时间】:2021-04-15 13:59:52
【问题描述】:
我目前正在使用将矩阵从其他 .mat 文件保存为 .mat 文件的脚本。我需要保存 96 个单独的文件,所以我有一个遍历矩阵名称的循环。我需要使用特定标题保存矩阵,我已将标题保存在单元格数组 {} 中。但是,当我使用 save(filename,variable) 函数时,我收到一条错误消息:
使用保存出错 必须是文本标量。 File_Creator 中的错误(第 35 行) 保存(名称,fname);
我的矩阵需要命名为“PHI_Af”、“PHI_Am”(依此类推,直到)“SLR_EF”(因此每个 cr 值都需要有一个包含每个 par 值的矩阵。这是我目前正在尝试的:
cr = {'Af','Am','As','Aw','BS','BW','Cs','Cw','Cf','Ds','Dw','Df','ET','EF'};
par = {'PHI','BLD','KS','LAMBDA','PSIS','SLR'};
underscore = {'_'};
%% i and j are parameters in a loop where i = 1:length(par) and j = 1:length(cr)
%% f is the variable currently storing the matrix
s.(horzcat(par{i},underscore{1},cr{j})) = f;
name = string(strcat(par{i},'_',cr{j},'.mat'));
fname = string(s.(horzcat(par{i},underscore{1},cr{j})));
save(name,fname);
当我用通用字符串替换“fname”时,例如'f',然后命令运行,但所有矩阵都保存为同一个东西('f'),这使得以后在同一个脚本中运行它们变得非常困难。
我希望有人能告诉我我做错了什么或为我提供更好的解决方案。如果我能提供更多信息,请告诉我。
谢谢
【问题讨论】:
-
不要使用函数
string,你正在使用字符数组,不要将它们与字符串混合。字符串使用"引号创建,字符数组使用'引号创建。 -
我仍然对您实际尝试保存的内容感到困惑。同样的命令是
save(file_name,var_name,var_name,...)。因此,您需要传递要保存的变量的 name。第一个参数必须是文件名。 -
您似乎在尝试使用结构。也许你想要
save(fname, '-struct',structName)语法?