私は以前に書いたMATLABコードをベクトル化していましたが、このプロセスでは、セグメント化エラーのためにmatlabがクラッシュし始めました。私は問題を1つの計算タイプに絞りました。複数の構造プロパティに割り当てることです。数千回実行されたときベクトル割当てを反復するときのMATLABセグメンテーションエラー
例えば、この形式のも自己の割り当ては、最終的にワンセグ障害を引き起こす:
[my_class_instance.my_struct_vector.my_property] = my_class_instance.my_struct_vector.my_propertyと、
私は最初、これは何らかの種類のメモリリークである必要があると想定していましたので、繰り返しごとにjavaの空きメモリを印刷しようとしましたが、これはかなり一定です。
そうそう、完全に喪失で、今これが壊れる理由として: -/
UPDATE:次のように変更ワンセグ断層が修正されています。
TEMP = [my_class_instance.my_struct_vector]。
[temp.my_property] = temp.my_property;
[my_class_instance.my_struct_vector] = temp;
ここで問題が解決されるのはなぜですか。たぶん構造体リストではなくハンドルクラスに繰り返しアクセスすることについての何か?
UPDATE 2:
単純なクラス:
classdef test_class
properties
test_prop
end
end
PLOTは、私が問題とここに投稿するのに十分なシンプルなダミープログラムを使用して周りの仕事を最後に複製されました
を厚く
そして、クラスにベクトル割り当てをして、常にクラッシュするプログラムです。
test_instance = test_class();
test_instance.test_prop = struct('test_field',{1 1});
for i=1:10000
[test_instance.test_prop.test_field] = test_instance.test_prop.test_field;
end
UPDATE 3:PLOTは
私はバグを見つけてターンを間引きます。 Matlabのテクニカルサポートによれば、クラスプロパティのベクトル割り当ての繰り返しは、R2011aでは(おそらく以前のバージョンでは)機能しません。彼はそれがR2012aでうまく動作すると私に言った、そして私が発見した同じ回避策を述べました:一時変数を使用してください。
そうそう...
この質問は、そのサポートチケットで終わるが、どんな大胆な個人が、このバグが全く存在理由としてショットを取りたい場合は、私は間違いなく、まだだろうかなり確信そのような答えに興味がある。 (学習は楽しいです!)
Matlabのバージョンは何ですか? –
勝利7のためのR2011a 64ビット – zergylord
ここでお手伝いできません...私はLinuxの64ビットでR2010bを持っており、そこでは正常に動作します。メモリダンプなどがありますか? –