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

2 vues (au cours des 30 derniers jours)
ZONZON
ZONZON le 6 Nov 2016
Commenté : michio le 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を記録する方法はないでしょうか。 回答をよろしくお願いします。

Réponse acceptée

michio
michio le 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 commentaires
ZONZON
ZONZON le 10 Nov 2016
回答ありがとうございます。
上記を実行したところ、無事にallbcを記録できました。
ありがとうございました。
michio
michio le 10 Nov 2016
問題の把握に手間取りごめんなさい。ご希望どおりで良かったです。
またわからない点がありましたらご質問ください!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by