Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Matlab将单元数组保存为文本文件_Arrays_Matlab_Save_Printf - Fatal编程技术网

Arrays Matlab将单元数组保存为文本文件

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(

在搜索了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(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',因此,一旦我发现了这些,并摆脱了他们,它的工作。谢谢大家的帮助!:)