2016-05-05 11 views
3

は、 Matlabでfwriteとfreadを使用するには?次のように私は問題を抱えている

私はYUVフォーマット int16ビットで、MathWorks社のMATLABでファイルを保つ:

配列の型がINT16である
nome_yuv = ('matriz.yuv'); 
% Filename = 'Imagem_Cube_Imaginario.yuv'; 
fid = fopen (nome_yuv, 'w'); 
elements = fwrite (fid, matriz16, 'int16'); 
fclose (fid); 

私は同じ行列を読みます。

fileID = fopen ('matriz.yuv'); 
x = fread (fileID, 'int16'); 

だから私のxタイプint16のではないでしょうか?

私のxはダブルタイプです。

+0

あなたが正しい答えを持っていれば、良いものをupvoteし、答え(答え投票の下にチェックマーク)として最も役立つとマークしてください。 – Crowley

答えて

4

あなたはfreadで二つのオプションを指定した場合、第二の選択肢が読み込まれる配列のサイズとして解釈されます。 https://de.mathworks.com/help/matlab/ref/fread.html意味

A = fread(fileID,sizeA) 
A = fread(fileID,sizeA,precision) 

、あなたがsizeのデフォルト値である、Infを3つのすべてのパラメータを指定する必要があると思います:

はで定義を参照してください。だから使用してください:

x = fread (fileID, Inf, 'int16=>int16'); 
+1

ドキュメントの追加情報: "精度の引数に異なるクラスを指定しない限り、Aのデータはクラスdoubleです。" –

+0

ありがとう、ありがとう、私は 'int16 => int16'もfwriteに使用していますか? ありがとうございます。謝る。 –

+0

docuで見る必要はありません:https://de.mathworks.com/help/matlab/ref/fwrite.html#input_argument_precision – tim

関連する問題