2013-06-27 94 views
0

沒有人知道如何將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.

回答

1

爲了編寫它,只需將它們的值在寫入之前加倍。

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中的圖像,但我假設將值寫入圖像在您的情況下不可行。

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它一次

+0

我回滾建議的編輯,因爲它是不正確寫一行。 'x'用於轉置矩陣'x',並且不打算作爲引用字符串:http://www.mathworks.com/help/matlab/ref/ctranspose.html – Amro

+0

轉置的原因是MATLAB中的矩陣是以[列 - 主要順序]遍歷的(https://en.wikipedia.org/wiki/Row-major_order#Column-major_order),但我們想將它逐行地寫入文件。在這種情況下,我有點懶惰,應該使用[非共軛轉置](http://www.mathworks.com/help/matlab/ref/transpose.html)來代替:'x.''(在這裏它並不重要,因爲這些數字純粹是真實的) – Amro