MATLAB uint8数据类型变量保存

时间:2013-06-27 01:47:57

标签: matlab file-io integer save text-files

有谁知道如何将uint8工作区变量保存到txt文件? 我尝试使用MATLAB save命令:

save zipped.txt zipped -ascii

但是,命令窗口显示警告错误:

  

警告:尝试将不支持的数据类型写入ASCII文件       变量'zipped'未写入文件。

3 个答案:

答案 0 :(得分:1)

为了编写它,只需在编写之前将值转换为double。

A=uint8([1 2 3])

toWrite=double(A)

save('test.txt','toWrite','-ASCII')

无法编写uint8的原因隐藏在在线保存文档的格式部分,让我自己找一点。

文档页面位于:http://www.mathworks.com/help/matlab/ref/save.html

格式部分表格后面的第3行(大约在页面的一半)说:

  

每个变量必须是二维双字符或字符数组。

或者,dlmwrite可以编写类型为uint8的矩阵,正如另一张海报也提到的那样,我相信csv也可以工作,但我自己没有测试过。

希望这会帮助你,但有点烦人!我认为uint8几乎只用于MATLAB中的图像,但我假设在你的情况下写一个图像是不可行的。

答案 1 :(得分:0)

您是否考虑过Matlab中的其他写入文件选项?

dlmwrite怎么样? 另一种选择可能是cvswrite

有关详细信息,请参阅this document

答案 2 :(得分:0)

尝试以下方法:

%# a random matrix of type uint8
x = randi(255, [100,3], 'uint8');

%# build format string
frmt = repmat('%u,',1,size(x,2));
frmt = [frmt(1:end-1) '\n'];

%# write matrix to file in one go
f = fopen('out.txt','wt');
fprintf(f, frmt, x');
fclose(f);

生成的文件类似于:

16,108,149
174,25,138
11,153,222
19,121,68
...

其中每一行对应一个矩阵行。

请注意,这是much faster而不是使用dlmwrite一次写一行