0

こんにちは、このコードがありますが、すべてのピクセルで出力結果を出力する方法がわかりません。出力コードが明確に定義されていないと思います。

編集:

コードを説明しようと思います:

% I have an image

    imagen1=imread('recor.tif');
    imagen2= double(imagen1);
    band1= imagen2(:,:,1);

% I preallocate the result (the image size is 64*89*6)
    yvan2= zeros(61,89,1);

% For every pixel of the image, I want to get one result (each one is different).
    for i = 1 : nfiles
        for j = 1 : nrows
            for i = 1:numel(band1)

% I'm doing this because I've to multiply the results of this interpolation with that result a2ldb1y= ldcm_1(:,1). This vector has a length of 2151x1 and I need to muliply the result of the interpolation for (101:267) position on the vector, this is the reason because I'm doing the interpolation since 101 to 267 (also because I don't have that values).

            interplan= interp1(van1,man2,t2,'spline');
             ma(96) = banda1a(i); % I said 96, because I want to do an interpollation 
            end                
            van1= [101 96 266]';
            mos1= ma(134);
            van2= [0 pos1 0];

            t= 101:267;
            t2= t';
            xi= 101:1:267;
            xi2=xi';
            interplan= interp1(van1,van2,t2,'spline');

% After this, I 'prepare' the vector.

            out=zeros(2151,1)
            out(101:267) = interplan;

% And then, I do all this operation (are important for the result) 

            a2ldb1y= ldcm_1(:,1); 
            a2ldsum_pesos1= sum(a2ldb1y);
            a2l7dout1_a= a2ldb1y.*out;
            a2l7dout1_b=  a2l7dout1_a./a2ldsum_pesos1;
            a2l7dout1_c= sum(a2l7dout1_b);

% And the result a2l7dout1_c I want it for every pixel (the results are different because every pixel has a different value...)
           **yvan2(:,:,1)= [a2l7dout1_c];**

        end 
    end

前もって感謝します、

4

1 に答える 1

0

私はここで暗闇の中で撮影していますが、あなたが探していると思います:

yvan2(i, j, 1)= a2l7dout1_c;

それ以外の:

yvan2(:,:,1)= [a2l7dout1_c];

yvan2したがって、ループが完了した後、出力を変数に格納する必要があります。

PS

コードのいくつかの問題:

  1. 同じ反復変数を使用する 2 つのループがあるのはなぜiですか? は 2 つのループiによって変更されているため、計算はおそらく正しくありません。for

  2. なぜ2番目のループが必要なのですか? ma(134)各反復は、前の反復によって設定された値をオーバーランします。ループ全体を次のように置き換えるだけです。

    ma(134) = banda1a(numel(band1))
    
  3. i名前とjfor ループ変数を使用しないでください。これらは既に虚数単位 (つまりsqrt(-1)) 用に予約されているため、MATLAB は名前解決のために追加の処理時間を必要とします。代わりに他のループ変数名を使用することをお勧めiijjます。

于 2013-01-28T12:23:01.323 に答える