【问题标题】:Save correct variable name in workspace在工作区中保存正确的变量名
【发布时间】:2012-11-24 04:30:49
【问题描述】:

我在matlab中有一个函数。

function [MEAN STD]=result(data)
MEAN=[mean(data)];
STD=std(data);
Training_data=[MEAN STD]
savefilename=sprintf('%s',inputname(1))
save(savefilename,'Training_data')
end

我设置数据的文件名=ET1_A_l1(imported to workspace alrdy)(ET1_A_l1=[1;2;1;3;1;4] 求所选数据(ET1_A_l1)的均值和标准差,并将统计特征保存到.mat 格式如下图:

>>[MEAN STD]=result(ET1_A_l1)

结果,保存文件的名称是ET1_A_l1.mat,我将ET1_A_l1.mat导入工作区,它显示'Training_data'如图1所示..

,

有什么好办法可以在workspace中把变量名(Training_data)改成ET1_A_l1??

【问题讨论】:

    标签: save matlab-load


    【解决方案1】:

    要在加载后更改变量名(不是字段名),试试这个:

    clear all; close all;
    
    fname = 'ET1_A_l1';
    Training_data=[0.5 .1]; % test data
    
    savefilename=sprintf('%s', [fname '.mat']);
    save(savefilename,'Training_data');
    
    clear Training_data;
    
    % important line
    eval([fname '=importdata(''' savefilename ''');']);
    

    编辑直接更改字段名称:

    function [MEAN STD]=result(data)
        MEAN = mean(data);
        STD = std(data);
        varname = inputname(1);
        eval([varname '=[MEAN STD];']);
        savefilename = sprintf('%s',varname);
        save(savefilename, varname);
    end
    
    >> ET1_A_l1=[1;2;1;3;1;4];
    >> >> [m s] = result(ET1_A_l1)
    
    m =
         2
    s =
        1.2649
    
    >> clear all;
    >> in = load('ET1_A_l1');
    
    >> fieldnames(in)
    ans = 
        'ET1_A_l1'
    

    【讨论】:

    • 代码仍将变量保存为 ET1_A_l1.mat 中的训练数据。
    • 在您的问题中,您明确要求更改名称在工作区。请参阅我的编辑以更改字段名称。
    • 只是变量名还是变量名和文件名? varname = [inputname(1) '_Trainingdata']; 并将savefilename = sprintf('%s',varname); 更改或不更改为savefilename = sprintf('%s',inputname(1));
    猜你喜欢
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多