0

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

save zipped.txt zipped -ascii

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

警告:尝试将不受支持的数据类型写入 ASCII 文件。
变量“压缩”未写入文件。

4

3 回答 3

1

为了编写它,只需在编写之前将您的值转换为 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 中的图像,但我假设在您的情况下将值写为图像是不可行的。

于 2013-06-27T05:14:26.110 回答
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
...

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

请注意,这比使用一次写入一行要快得多dlmwrite

于 2013-06-27T06:07:09.693 回答
0

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

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

有关详细信息,请参阅此文档

于 2013-06-27T05:02:50.020 回答