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

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を使わずにより高速化できる方法があれば連絡をお願いします。

A 回答 (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);
とか。
もしかしたら早くならないかも。
    • good
    • 0

このコードだと、やってやれないことは無いでしょうが難しいでしょうね。

また、forを使わずに処理する必然性も感じられません。
MATLABで高速化のためにforを使用しないというのは有効な手段ですが、何でもかんでもforを無くせば良いというものでもないです。

このコードを見る限り、変数xt2、yt2、torieは初期化されていないようですので、ループ前にzeros関数で初期化すれば、ループ回数にもよりますがかなり高速になります。

既に初期化しているのであれば、MATLABを使用する限り処理速度についてはある程度我慢するしかないと思います。
    • good
    • 0

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