【问题标题】:How do I save the name of a MATLAB file from a list?如何从列表中保存 MATLAB 文件的名称?
【发布时间】: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) 语法?

标签: matlab matrix save


【解决方案1】:

假设矩阵 f 在循环的每次迭代中都会发生变化(由于您没有发布其他一些代码),看起来这就是您需要的所有代码:

cr = {'Af','Am','As','Aw','BS','BW','Cs','Cw','Cf','Ds','Dw','Df','ET','EF'};
par = {'PHI','BLD','KS','LAMBDA','PSIS','SLR'};

for i = 1:length(par)
    for j = 1:length(cr)
        % add code here that loads the matrix f
        name = [par{i}, '_', cr{j}, '.mat'];        
        save(name, 'f');
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多