リアルタイムに変化す​る変数への代入値を記​録する方法

7 visualizzazioni (ultimi 30 giorni)
ZONZON
ZONZON il 6 Nov 2016
Commentato: michio il 10 Nov 2016
こんにちは。
以下のコードについて質問があります。
for object = 1:length(stats)
bb = stats(object).BoundingBox;
bc = stats(object).Centroid;
plot(bc(1),bc(2), '-m+')
a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2)))));
set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 14, 'Color', 'white');
end
ある条件下ではこのfor文が実行され、このfor文中の変数bcはリアルタイムに変化します。 この変化するbcの数値をすべて記録したいのですが、よい記述方法が思いつきません。 インクリメントのobjectは、必ずしも1ずつ増加するという動作を実行しておらず、 そのことが処理を難しくしています。
なんとかこのbcを記録する方法はないでしょうか。 回答をよろしくお願いします。

Risposta accettata

michio
michio il 6 Nov 2016
幾つか確認させてください。
  1. stats は イメージ領域のプロパティの計測を行う regionprops 関数の出力でしょうか。
  2. 「for文中の変数bcはリアルタイムに変化」とは、 for ループが進行する毎に bc が変化するという意味でしょうか。
  3. 「インクリメントのobjectは、必ずしも1ずつ増加するという動作を実行しておらず」とのことですが、for object = 1:length(stats) という for ループのなかでは、 object は 1ずつ増加します。何か他のことに触れていらっしゃいますでしょうか?
例えば、すべての object bc の値を確保するだけですと、下記の実行でも可能となります。
N = length(stats);
bc = zeros(2,N);
for object = 1:length(stats)
bc(:,object) = stats(object).Centroid;
end
allbc = vertcat(stats.Centroid);
  8 Commenti
ZONZON
ZONZON il 10 Nov 2016
回答ありがとうございます。
上記を実行したところ、無事にallbcを記録できました。
ありがとうございました。
michio
michio il 10 Nov 2016
問題の把握に手間取りごめんなさい。ご希望どおりで良かったです。
またわからない点がありましたらご質問ください!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by