Arrays Matlab将单元数组保存为文本文件
在搜索了mathworks的网站后,我在这里也找到了将单元格数据保存到文本文件的代码。。。但我发现的每一种变异都不起作用。这是我当前的代码(也是在这里和mathworks上出现最多的代码)-请帮助我找出为什么它对我不起作用…: 第一次尝试:Arrays Matlab将单元数组保存为文本文件,arrays,matlab,save,printf,Arrays,Matlab,Save,Printf,在搜索了mathworks的网站后,我在这里也找到了将单元格数据保存到文本文件的代码。。。但我发现的每一种变异都不起作用。这是我当前的代码(也是在这里和mathworks上出现最多的代码)-请帮助我找出为什么它对我不起作用…: 第一次尝试: array = cell(1,10); for i=1:10 array{i} = 'someText'; end fid = fopen('file.txt', 'wt'); fprintf(fid, '%s\n', array); fclose(
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', array);
fclose(fid);
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fileID = fopen('celldata.dat','w');
[nrows,ncols] = size(array);
for row = 1:nrows
fprintf(fileID,'%s\n' ,array{row,:});
end
fclose(fileID);
错误:
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', array);
fclose(fid);
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fileID = fopen('celldata.dat','w');
[nrows,ncols] = size(array);
for row = 1:nrows
fprintf(fileID,'%s\n' ,array{row,:});
end
fclose(fileID);
使用fprintf时出错
未为“单元”输入定义函数
saveToFile中出错(第11行)
fprintf(fid,'%s\n',数组)
因此,我特别寻找了一种适用于单元阵列的方法(可以在这里找到:)
第二次尝试:
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', array);
fclose(fid);
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fileID = fopen('celldata.dat','w');
[nrows,ncols] = size(array);
for row = 1:nrows
fprintf(fileID,'%s\n' ,array{row,:});
end
fclose(fileID);
错误:
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', array);
fclose(fid);
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
fileID = fopen('celldata.dat','w');
[nrows,ncols] = size(array);
for row = 1:nrows
fprintf(fileID,'%s\n' ,array{row,:});
end
fclose(fileID);
使用fprintf时出错
未为“单元”输入定义函数
saveToFile中出错(第12行)
fprintf(文件ID,'%s\n',数组{row,:})
我不会让你再做一些失败的尝试。。这是我能找到的最好的。。任何帮助都将不胜感激!:) 下面的代码对我很有用:
array = cell(10,1);
for i=1:10
array{i} = ['someText ' num2str(i)];
end
fileID = fopen('celldata.dat','w');
[nrows,ncols] = size(array);
for row = 1:nrows
temp_str = array{row,:};
fprintf(fileID ,'%s\n', temp_str);
end
fclose(fileID);
主要区别在于在CHAR类型的变量中指定单元格内容 或者,您可以使用
strjoin
将单元格数组加入字符串:
array = cell(1,10);
for i=1:10
array{i} = 'someText';
end
line = strjoin(array)
fid = fopen('file.txt', 'wt');
fprintf(fid, '%s\n', line);
fclose(fid);
我将您的第二次尝试复制到MATLAB的命令窗口中,效果非常好!您可能希望在第一次尝试中使用'array{:}'而不是'array'。是的,如果您按照Benoit的建议去做,第一种方法也可以。=)您检查过您使用的版本了吗?啊哈-我发现问题出在我使用的一些字符串数据上,这些数据显示为[](matlab显示'ans=[]'在一些地方,通常有一个字符串'ans='someString'),所以我想我需要以某种方式用字符串替换[]。有点延迟,但我无论如何都会更新以节省其他人的时间-我发布的第二次尝试确实奏效,问题是我的一些(非常大的数据)的值为'NaN',因此,一旦我发现了这些,并摆脱了他们,它的工作。谢谢大家的帮助!:)