【问题标题】:Saving a file in MATLAB with a variable filename in a loop [duplicate]在循环中使用变量文件名在MATLAB中保存文件[重复]
【发布时间】:2011-06-01 11:04:14
【问题描述】:

可能的重复:
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) 格式,并使用变量文件名循环从数组中获取数据?

【问题讨论】:

标签: matlab variables loops filenames


【解决方案1】:

查看save() function 的 MATLAB 文档

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

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

编辑:您似乎有新的错误。我可以看到两件事:

  1. 你的P变量是一个结构体array,所以它有多个元素——save()一次只能保存一个文件; 2 xls 不是你的结构文件,它有一个name 字段。

要保存您的数据,它可能类似于:

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

【讨论】:

  • 我尝试使用上述语法,但显示错误:引用不存在的字段'xls'。
  • @Parijat:更新了我的帖子,尝试解决其他错误。
  • 感谢安德烈的帮助。但我不敢说它给出了一个错误“错误使用==>保存参数必须包含一个字符串。保存(名称,P(m).data,'-ascii');”我猜 save 不接受循环中的变量文件名或变量数据。甚至 csv/xlswrite 也会出现错误。
猜你喜欢
  • 1970-01-01
  • 2015-02-08
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 2019-09-25
  • 1970-01-01
  • 2016-01-05
相关资源
最近更新 更多