2011-06-18 1 views
3

Matlab(私は慣れていない)のコードをC++に変換しています。コードの一部は、生データファイルを読み込み、行列の要素に8ビットごとに入力します。MatlabとC++で異なる値を取得している生データファイルを読む

MATLAB:同様

header=fread(fid, 512, '*uint8'); 

、C++では私が持っている:

fread(&q1[0][0], sizeof(uint8_t), 512, filepath); 

これらは、両方のコースの同じファイルを読み込み、そして、彼らは素子#33まで試合を吐き出す値がされています。

10 
0 
0 
0 
244 
1 
0 
0 
10 
0 
0 
0 
244 
1 
0 
0 
10 
0 
0 
0 
244 
1 
0 
0 
10 
0 
0 
0 
208 
7 
0 
0 

私のMatlabのコードは、180の値を吐き出しながら、私のC++プログラムは「92」を出してくれるの発散を開始:

C++/MATLAB 
92/180 
58/118 
230/219 
60/133 

をし、512バイトの残りのために一致せずに続けます。

これを引き起こす可能性のあるアイデアはありますか?

+2

最初の考え:C++で配列に十分なメモリを割り当てておらず、オーバーランしています。あなたのために自動サイズ変更するためのまともな標準コンテナを考えてみましょう。 –

+0

"q1"はどのように定義されていますか? – Jollymorphic

+0

... "q1"はどのように印刷されていますか?ソースは、定義と印刷アルゴリズムの両方に役立ちます。 – Jollymorphic

答えて

0

Matlabは、私が送信していたrawファイルを前処理していたので、ヘッダーが変更されました。ファイルは「コピー」(ウィンドウに関する限り)でしたが、ヘッダーは異なっていました。これは、生データの先頭部分を印刷するときに私に異なる値を与えます。

1

バイナリファイルの 'b'オプションを使用してC++でファイルを開いたのですか?デフォルトはテキストモードで、改行/改行を別の方法でintepretします。

編集:これはWindowsと仮定します。 Windowsでない場合は、これを無視することができます。

関連する問題