Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/function/3.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
Matlab Matlat函数,用于将单元格数组转换为特定格式的文本文件_Matlab_Function - Fatal编程技术网

Matlab Matlat函数,用于将单元格数组转换为特定格式的文本文件

Matlab Matlat函数,用于将单元格数组转换为特定格式的文本文件,matlab,function,Matlab,Function,运行一个算法后,我得到了单元格数组X中的输出 >> X X = [5x1 double] [5x1 double] >> celldisp(X); X{1} = 1 2 3 4 5 X{2} = 11 21 31 41 51 61 71 81 请注意,输出的维度是不同的。X{1}的长度为5,而X{2}的长度为8。 现在,我想将celldisp(X)的输出以以下格式写入一个txt文件: output.txt 12345 1121311

运行一个算法后,我得到了单元格数组X中的输出

>> X
X = 

[5x1 double]
[5x1 double]
>> celldisp(X);

X{1} =

 1
 2
 3
 4
 5

X{2} =

 11
 21
 31
 41
 51
 61
 71
 81
请注意,输出的维度是不同的。X{1}的长度为5,而X{2}的长度为8。
现在,我想将
celldisp(X)
的输出以以下格式写入一个txt文件:
output.txt
12345
112131141617181

我该怎么做?是否有预定义的函数来实现此目标,或者是否需要编写自定义的函数。有人能帮我解决这个问题吗?

就这么办

dlmwrite('output.txt',horzcat(X{:})','delimiter',' ');

对于更新后的问题,如果单元格元素中的数组长度不相同,我建议您使用循环:

fid = fopen('output.txt', 'w');
for idx = 1:numel(X)
    fprintf(fid,[repmat('%d ', 1, numel(X{idx})) '\n'], X{idx});
end
fclose(fid);

又一次编辑,这次是为了让它成为一个函数

function printCellArray(filename, cellarray)

    fid = fopen(filename, 'w');
    for idx = 1:numel(cellarray)
        fprintf(fid,[repmat('%d ', 1, numel(cellarray{idx})) '\n'], cellarray{idx});
    end
    fclose(fid);

end

如果输出的维度不一致怎么办。我的意思是X{1}=12345x{2}=112131415161。如何处理?原因是,我得到了以下错误“使用horzcat连接矩阵的维数不一致的错误”。由于输出的维数不同,我想我需要为此编写一个用户定义的函数。你知道怎么做吗?我想这满足了你的需要。输出是我想要的,但是输出文件中每行末尾都有一些乱码,我试着在没有第5行提到的“\b”的情况下运行函数,但输出文件中每行末尾的乱码内容仍然存在……我认为这是由文本文件编辑器造成的。你在用什么?在Matlab中,它在这里看起来很好,您可以通过键入
edit output.txt
进行检查。