ASCIIオプション
save
方法は、それがサポートすることができるものでは多少制限され、その後、それはあなたがいるような数字の制限された範囲を扱うとき、あなたのファイルをbloatsあなたの数字を表現するために浮動小数点表記を使用しています(つまり、uint8,0〜255)。
dlmwrite
(documentation here)を参照してください。
書き込む/保存する変数、保存する変数、値を区切る区切り文字などの追加パラメータが必要です。
単一バイトが、あなたはおそらく代わりに、カスタムバイナリファイルと一緒に行きたいとあなたが保存されているuint8のデータに探しているなら、あなた例えば、それはこの
x = rand(5)*100;
x = uint8(x);
dlmwrite('pqfile.txt',x,'\t');
バイナリオプション
のように見えますASCIIの代わりに。 (はい、あなたは、単一のASCII文字にUINT8を変換することはできますが、これらの値は、あなたの区切り文字と解釈されていると問題に遭遇;改行やタブ)
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のために必要です-賢い。
ASCII形式のファイルの場合、save関数には次のような制限があります:[...]各変数は2次元の__double__または__char__配列でなければなりません。 'x'の代わりにdouble(x)'を使いますか?ただし、これはテキストファイルに '81'の代わりに' 8.1000000e + 01'のようなものを書き込むことに注意してください。または、 'dlmwrite( 'pqfile.txt'、x)' –
を試してください。これはVHDLの質問ではありませんので、タグ – JHBonarius
を削除してください。MATLABによって書き込まれたデータは、VHDLAテストベンチ – quantum231