ASCII選項
的save
方法是什麼可以支持一定程度的限制,然後使用浮點表示法來表示你的號碼與數字範圍有限的問題時好像你是哪個漲大文件(即uint8,0到255)。
退房dlmwrite
作爲替代(documentation here)。
它需要寫入/保存到的文件名,要存儲的變量以及一些其他參數,例如要分隔值的分隔符。
對於你的榜樣,它看起來像這樣
x = rand(5)*100;
x = uint8(x);
dlmwrite('pqfile.txt',x,'\t');
二元期權
如果你正在尋找存儲在您的UINT8數據爲單字節,那麼你可能想用一個自定義的二進制文件,而不是去而不是ASCII。 (是的,你可以UINT8轉換爲單一的ASCII字符,但你遇到的問題與這些值被解釋與你的分隔符。換行符或製表符)
fid=fopen('pqfile.dat','wb');
if(fid>2)
fwrite(fid,size(x),'*uint8'); % Note: change data type here you are dealing with more than 255 rows or columns
fwrite(fid,x','*uint8'); % Transpose x (with x') so it is stored in row order.
fclose(fid);
else
fprintf(1,'Could not open the file for writing.\n');
end
我不知道你使用的是什麼類型的解析器爲你的VHDL,但是這會把你的數據打包到一個文件中,並且在你的序列化數據中有一長串的預期維度。
讀回與MATLAB,你可以這樣做:
fid = fopen('pqfile.dat','rb');
szX = fread(fid,2,'uint8');
x = fread(fid,szX,'*uint8')'; % transpose back if you are dealing with matlab.
fclose(fid);
轉置操作是必要的MATLAB,因爲它讀取數據按列,而大多數其他語言(在我的經驗)逐行讀取-明智的。
從'help save':_對於ASCII文件格式,save函數有以下限制:[...]每個變量都必須是一個二維__double__或__char__數組._你不能只保存'y = double(x)'而不是'x'?但是請注意,這將在文本文件中寫入諸如「8.1000000e + 01」而不是「81」之類的內容。或者試試'dlmwrite('pqfile.txt',x)' –
這不是一個VHDL問題,所以請刪除標籤 – JHBonarius
MATLAB寫的數據是一個二維數組,可以讀入VHDLA測試平臺 – quantum231