在循环中使用变量文件名在MATLAB中保存文件

时间:2011-06-01 11:04:15

标签: matlab variables loops filenames

  

可能重复:
  Save mat file from MATLAB
  How to tell MATLAB to open and save specific files in the same directory

我有一组CSV个文件,需要提取数据才能获得图表。我使用以下代码在循环中生成一个变量文件名,并相应地获得所需的数据。

P = dir('*.csv');

for m = 1:length(P)
    P(m).data = csvread(P(m).name);
end

我现在想要在获取所需数据之前修改这些CSV文件(更改CSV文件中的数据值),然后在循环中将这些文件保存为Excel格式(.xls)。

这样的东西
for i = 1:length(P(m).data)
    if P(m).data(i,1)< value1
        P(m).data(i,2) = 0;
    end
    save P(m).xls P(m).data -ascii; % Gives error "save 'P(m).data' is not a valid variable name."
end

如何使用变量文件名以Excel(.xls)格式保存文件,从循环中的数组中获取数据?

1 个答案:

答案 0 :(得分:2)

查看save() function

的MATLAB文档

您需要使用函数调用语法来使用变量文件名:

save(P(m).xls, P(m).data, '-ascii');

修改:您似乎遇到了新的错误。我可以看到两件事:

  1. 您的P变量是一个struct 数组,因此它有多个元素 - save()一次只能保存一个文件; 2 xls不是您的结构文件,其中包含name字段。
  2. 要保存数据,它可能类似于:

    for m = 1 : length(P),
        save(P(m).name, P(m).data, '-ascii');
    end
    

    如果你想替换扩展名以避免覆盖你的文件(我认为xls是你想要的),这应该可以解决问题:

    for m = 1 : length(P),
        name = P(m).name;
        name = name(1:find(name,'.'));
        name = [name '.xls'];
        save(name, P(m).data, '-ascii');
    end