可能重复:
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)格式保存文件,从循环中的数组中获取数据?
答案 0 :(得分:2)
您需要使用函数调用语法来使用变量文件名:
save(P(m).xls, P(m).data, '-ascii');
修改:您似乎遇到了新的错误。我可以看到两件事:
P
变量是一个struct 数组,因此它有多个元素 - 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