有谁知道如何将 uint8 工作区变量保存到 txt 文件?我尝试使用 MATLAB 保存命令:
save zipped.txt zipped -ascii
但是,命令窗口显示警告错误:
警告:尝试将不受支持的数据类型写入 ASCII 文件。
变量“压缩”未写入文件。
有谁知道如何将 uint8 工作区变量保存到 txt 文件?我尝试使用 MATLAB 保存命令:
save zipped.txt zipped -ascii
但是,命令窗口显示警告错误:
警告:尝试将不受支持的数据类型写入 ASCII 文件。
变量“压缩”未写入文件。
为了编写它,只需在编写之前将您的值转换为 double 即可。
A=uint8([1 2 3])
toWrite=double(A)
save('test.txt','toWrite','-ASCII')
uint8不能写的原因隐藏在网上save doc的格式部分,自己找了一下。
文档页面在这里: http: //www.mathworks.com/help/matlab/ref/save.html
格式部分中表格之后的第三行(大约在页面的中间)说:
每个变量必须是二维双精度或字符数组。
或者,dlmwrite 可以编写 uint8 类型的矩阵,正如另一张海报也提到的那样,我相信 csv 也可以,但我自己还没有测试过。
希望对您有所帮助,虽然有点烦人!我认为 uint8 几乎专门用于 MATLAB 中的图像,但我假设在您的情况下将值写为图像是不可行的。
尝试以下操作:
%# 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
...
其中每一行对应一个矩阵行。
请注意,这比使用一次写入一行要快得多dlmwrite