-9

画像結果のピクセルの値を読み取り、この値を for ループに使用する値と比較したい

function GrdImg= GrdLbp(VarImg,mapping,LbpImg)
tic
p=mapping.samples;
[Ysize,Xsize]=size(result);
GImg=zeros(Ysize,Xsize);
temp=[];
cnt=1;
for n=0:p-1
    temp(cnt)=2^n;
    temp(cnt+1)=(2^p)-1-(2^n);
    cnt=cnt+2;
end
for i=1:Ysize
    i
        for j=1:Xsize
                if isempty(find(result(i,j)==temp(:,:)))==1
                  GImg(i,j)=sqrtm(Vresult(i,j));
                end


            end
        end 

しかし、動作が遅すぎます。for ループの代わりに何を使用できますか? どうもありがとう

4

3 に答える 3

0

ちなみに、完全に編集された質問の時点で、以前の回答を編集するのではなく、新しい回答をします。

いくつかの方法でコードを改善できます:
1. の代わりに:

    for n=0:p-1
        temp(cnt)=2^n;
        temp(cnt+1)=(2^p)-1-(2^n);
        cnt=cnt+2;
    end
    
これを使用してください:
    temp=zeros(1,2*p);
    n=0:p-1;
    temp(1:2:2*p)=2.^n; %//for odd elements 
    temp(2:2:2*p)=2^p-1-2.^n; %//for even elements (i supposed p>1) 

2.コードが計算の準備ができていて、デバッグなどの準備ができていない場合は、実行に時間がかかりすぎるため(CPUサイクルで)、画面に表示する変数を作成しないでください。iコードには、画面に表示されるような変数がいくつかあります。それらを削除するか、;.


3.は 1 次元である temp(:)ため、最後の行で使用できます。 4. 変数の種類ごとに異なる関数があります。このコードでは、の代わりに使用できます。少し速いかもしれません。5.このコードの大きな問題は、最後の比較にあります。行列の非要素が特定の要素と等しくない場合は、何かをしてください! コードの本当の目的を知らなければ、この部分を改善するのは難しいです! まったく異なるコードを持つ他のアルゴリズムで問題を解決している可能性があります。でも仕方がないので、このように使います(ネストされたループ)頑張ってください!temp
sqrt()sqrtm()

tempresult

于 2013-07-23T22:49:40.590 に答える