有谁知道如何将uint8工作区变量保存到txt文件? 我尝试使用MATLAB save命令:
save zipped.txt zipped -ascii
但是,命令窗口显示警告错误:
警告:尝试将不支持的数据类型写入ASCII文件 变量'zipped'未写入文件。
答案 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)
答案 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
一次写一行