沒有人知道如何將uint8工作區變量保存到txt文件嗎? 我嘗試使用MATLAB save命令:MATLAB uint8數據類型變量保存
save zipped.txt zipped -ascii
然而,命令窗口中顯示的警告錯誤:
Warning: Attempt to write an unsupported data type to an ASCII file.
Variable 'zipped' not written to file.
沒有人知道如何將uint8工作區變量保存到txt文件嗎? 我嘗試使用MATLAB save命令:MATLAB uint8數據類型變量保存
save zipped.txt zipped -ascii
然而,命令窗口中顯示的警告錯誤:
Warning: Attempt to write an unsupported data type to an ASCII file.
Variable 'zipped' not written to file.
爲了編寫它,只需將它們的值在寫入之前加倍。
A=uint8([1 2 3])
toWrite=double(A)
save('test.txt','toWrite','-ASCII')
uint8無法寫入的原因隱藏在網上保存文檔的格式部分,讓我自己找了一下。
的文檔頁面是在這裏:http://www.mathworks.com/help/matlab/ref/save.html
格式部分表後,3號線(約網頁下半部)說:
Each variable must be a two-dimensional double or character array.
或者,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',並且不打算作爲引用字符串:http://www.mathworks.com/help/matlab/ref/ctranspose.html – Amro
轉置的原因是MATLAB中的矩陣是以[列 - 主要順序]遍歷的(https://en.wikipedia.org/wiki/Row-major_order#Column-major_order),但我們想將它逐行地寫入文件。在這種情況下,我有點懶惰,應該使用[非共軛轉置](http://www.mathworks.com/help/matlab/ref/transpose.html)來代替:'x.''(在這裏它並不重要,因爲這些數字純粹是真實的) – Amro