-1

編集 1 - この質問は解決されました。これを見つけてくれた Floris のおかげでタイプミスが原因でした。

Matlab に 1 行の行列があり、切り捨てられてデータが失われます。

私のコードは次のとおりです。

[status,Vf_rpm_string] = system (fragment_velocity_string);
Vf_rpm_shape=regexprep(Vf_rpm_string,'\n',' ');
Vf_rpm_vector=str2num(Vf_rpm_string);
Vf_rpm= reshape(Vf_rpm_vector,[],1);

コードはシステム コマンドを実行し、結果を格納します。結果は数値のマトリックスであり、マトリックスの最後の行の列が前の行よりも少ない場合があります。Matlab は、最後の行にあるいくつかの空の列をどう処理すればよいかわからないため、これを好みません。そのため、結果から改行文字を削除(\n)してスペースに置き換える必要があります。

システムコマンドの結果が大きくなりすぎるまで、これはうまく機能していたので、改行文字を削除(\n)してスペースに置き換えて1行の行列を作成すると、Matlabには長すぎて切り捨てられ、多くのものが失われます私のデータ。したがって、返されたデータ (文字列として返される) を数値に変換すると、空の行列が得られます。この時点では、reshape コマンドは無意味です。

これは、Matlab での読み取り方法です。

 20.65866342... Output truncated.  Text exceeds maximum line length of 25,000 characters for Command Window display.

したがって、20.65866342 は、データが失われる前の最後の値です。コマンドウィンドウには大きすぎると言われていますが、それでも変数にすべてのデータが保存されておらず、失われています。

この切り捨てを回避する解決策はありますか? または、データを変換するための代替方法を提案したい人はいますか?

Matlab 2012b と Windows 7 を使用しています

御時間ありがとうございます。

4

1 に答える 1

1

問題は、改行を削除したことですが、削除された文字列は解析しているものではありませんか?

[status,Vf_rpm_string] = system (fragment_velocity_string);
Vf_rpm_shape=regexprep(Vf_rpm_string,'\n',' ');
Vf_rpm_vector=str2num(Vf_rpm_string);
Vf_rpm= reshape(Vf_rpm_vector,[],1);

そのコードの 3 行目は、

    Vf_rpm_vector=str2num(Vf_rpm_shape);

あなたのコードのロジックを理解していれば。

于 2013-07-10T13:11:03.357 に答える