アプリ版:「スタンプのみでお礼する」機能のリリースについて

matalabで画像処理をしたいのですが、 同じ処理を複数回、違う変数に対して行いたいのですがやり方がよくわからりません。

たとえば、
[output1 ,model_color1] = func_AAAA( imgdata,center1);
[output2 ,model_color2] = func_AAAA( imgdata,center2);

[output10 ,model_color10] = func_AAAA( imgdata,center10);
というようなことを行いたいのですが、
いちいち全部記述すると
output5までしかいらない時にわざわざ6~10を消さなければならないので
for文を使って書けるようにしたいと考えています
イメージとしては下のように処理したいのですがこれでは当然エラーになります。
for NUM=1:10
[outputNUM ,model_colorNUM] = func_AAAA( imgdata,centerNUM);
end

num2strを使えばできそうな感じがするのですがどのようにすればよいでしょうか?
お願いします

A 回答 (2件)

cell array を使って,



for NUM=1:10
[output{NUM} ,model_color{NUM}] = func_AAAA( imgdata,center{NUM});
end

こんな感じに書けば,loop できる

doc の matlab-> Programing -> Data Types -> Cell Arrays
辺りを参考にすること.
    • good
    • 0
この回答へのお礼

ありがとうございまうす!

無事にできました!

お礼日時:2011/07/12 15:15

まあ全ての出力を別々の変数に出そうとすると変数の数がエライことになるので、


No.1の方が書かれているようにセル配列に入れるのが楽なんでしょうが、
あくまでも別々の変数に、ということであればevalを使うのがいいでしょう。
eval関数はeval('String')の形で使い、文字列をそのまま実行します。
例えば、eval('a=1+2;')とすれば、a=3になります。
よって、今回で言えば

eval(['[output' num2str(1) ',model_color' num2str(1) '] = func_AAAA( imgdata,center' num2str(1) ');']);

とすれば、
[output1 ,model_color1] = func_AAAA( imgdata,center1);
を実行したのと同じ結果が得られます。

また、わざわざnum2strを使って文字列をつないで行くのがめんどくさければ、
sprintfを使って文字列を生成してやるという手もあります。

参考になれば幸いです。
    • good
    • 0
この回答へのお礼

eval関数など
まだまだ知らない関数がmatlabにはたくさんあるようですね…

回答ありがとうございます!

お礼日時:2011/07/12 15:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!