5

histShape.m関数で呼び出されたファイルがhistShapeあり、他の関数もいくつかあります。

コードの一般的な見方は次のとおりです。

%
function [outputImage] = histShape(srcimg, destimg)

    PIXELS = 255 + 1;

     ....
     ....
end



%
function [outputImage] = normalizeAndAccumulate(inputImage)

   PIXELS = 255 + 1;

....
....

end

%
function [pixels] = getNormalizedHistogram(histogram , inputImage)


   PIXELS = 255 + 1;

  ....
  ....

end

使用できますglobal x y z; が、別の方法を探しています。

変数を global として宣言したいのですがPIXELS、どうすればできますか?

よろしく

4

3 に答える 3

10

キーワードを使用して、MATLAB 関数内のグローバル変数にアクセスできますglobal

function my_super_function(my_super_input)
    global globalvar;

    % ... use globalvar
end

通常、同じキーワードを使用して、関数の外側のスクリプトでグローバル変数を宣言します。

% My super script
global globalvar;
globalvar = 'I am awesome because I am global';
my_super_function(a_nonglobal_input);

ただし、これは厳密には必要ありません。グローバル変数の名前が関数間で一貫している限り、記述した関数で定義するだけで同じ変数を共有できglobal globalvar;ます。

必要なのはglobal PIXELS;、各関数の最初に (値を割り当てる前に) 定義することだけです。

こちらの公式ドキュメントを参照してください。

于 2012-11-14T05:37:44.887 に答える
4

一般的に望ましくないグローバル変数の使用に代わる方法は、PIXELS 変数を各関数に渡すことです。たくさんある場合は、それらを保持する構造体を作成できます。

%
function [outputImage] = histShape(srcimg, destimg, PIXELS)

     ....
     ....
end



%
function [outputImage] = normalizeAndAccumulate(inputImage, PIXELS)

....
....

end

%
function [pixels] = getNormalizedHistogram(histogram , inputImage, PIXELS)

  ....
  ....

end

または構造体で

    %In the main script calling the functions
    options.Pixels = 255 + 1

    function [outputImage] = histShape(srcimg, destimg, options)

         PIXELS = options.Pixels;
         ....
         ....
    end
    %etc...
于 2012-11-14T07:43:12.533 に答える