【发布时间】:2013-06-27 01:47:56
【问题描述】:
有人知道如何将 uint8 工作区变量保存到 txt 文件吗? 我尝试使用 MATLAB 保存命令:
save zipped.txt zipped -ascii
但是,命令窗口显示警告错误:
警告:尝试将不受支持的数据类型写入 ASCII 文件。
变量“压缩”未写入文件。
【问题讨论】:
标签: matlab file-io integer save text-files
有人知道如何将 uint8 工作区变量保存到 txt 文件吗? 我尝试使用 MATLAB 保存命令:
save zipped.txt zipped -ascii
但是,命令窗口显示警告错误:
警告:尝试将不受支持的数据类型写入 ASCII 文件。
变量“压缩”未写入文件。
【问题讨论】:
标签: matlab file-io integer save text-files
为了编写它,只需在编写它之前将你的值转换为两倍。
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
格式部分中表格后的第 3 行(大约在页面的中间位置)显示:
每个变量必须是二维双精度或字符数组。
或者,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
...
每行对应一个矩阵行。
请注意,这是much faster,而不是使用一次写入一行的dlmwrite
【讨论】:
x' 用于转置矩阵x,而不是用作引用字符串:mathworks.com/help/matlab/ref/ctranspose.html
x.'(这里没关系,因为这些数字是真实的)