• ベストアンサー

MATLABのプログラミングで

MATLABでプログラミングを行っているのですが、forを使い for trt=1:rety(1); xt2(trt,:)=xt1(trt):xt1(trt)+(x-1); yt2(trt,:)=yt1(trt):yt1(trt)+(x-1); end for t3t=1:re/ysuu torie(:,:,t33(:,t3t))=saweq(xt2(gjir1(trt),:),yt2(gjir1(trt),:),:); end この様な変数を作製しています。 上のアルゴリズムは a:b (a=1:10) (b=a+5) で複数の位置データを記録する物で、 下のアルゴリズムは画像データを重ね合わせる物です。 これらのアルゴリズムでforを使わずにより高速化できる方法があれば連絡をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

xt1,yt1が rety(1)行、1列の縦ベクトルだとして、 xt2 = ones(rety(1),1)*(0:x-1) + xt1*ones(1,x); yt2 = ones(rety(1),1)*(0:x-1) + yt1*ones(1,x); とか。 もしかしたら早くならないかも。

その他の回答 (1)

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.1

このコードだと、やってやれないことは無いでしょうが難しいでしょうね。また、forを使わずに処理する必然性も感じられません。 MATLABで高速化のためにforを使用しないというのは有効な手段ですが、何でもかんでもforを無くせば良いというものでもないです。 このコードを見る限り、変数xt2、yt2、torieは初期化されていないようですので、ループ前にzeros関数で初期化すれば、ループ回数にもよりますがかなり高速になります。 既に初期化しているのであれば、MATLABを使用する限り処理速度についてはある程度我慢するしかないと思います。

関連するQ&A

専門家に質問してみよう