はどのようにcolormap
スコープされmatlab
ますか? 以下の例は、コードのブロック内に設定された値がそのブロックの外部からアクセスできるため、レキシカルスコープではないことを示唆しているようです。
% example 1
for i=1:3
colormap('gray');
subplot(2,2,i);
imagesc(eye(5));
end
subplot(2,2,4);
imagesc(eye(5));
figure
さらに、その定義は、他の関数 ( など) が呼び出されるかどうかに依存するようです。次の 2 つの例では、colormap
他の関数が呼び出されるかどうかに基づいて動的にスコープが設定されているように見えます。
% example 2
colormap(gray);
for i=1:4
subplot(2,2,i);
imagesc(eye(5));
end
% example 3
colormap(gray);
figure;
for i=1:4
subplot(2,2,i);
imagesc(eye(5));
end
「例 2」では、グレー カラー マップがそれぞれに適用されますimage
。「例 3」では、各 にデフォルトcolormap
( jet
) が使用されていますimage
。これは、関数の呼び出しがfigure
以前のcolormap
定義に取って代わり、それらをデフォルト値にリセットすることを示唆しています。このプロパティを持つ他の関数呼び出しは何ですか?
最後に、呼び出しの効果は何colormap('default')
ですか? figure
を呼び出して をデフォルト値にリセットするという以前の仮定を考えるとcolormap
、次のコードは、予想どおり、 を含む画像を生成しませんgray
colormap
。むしろ、すべての図はjet
colormap
. どのような意味gray
colormap
でデフォルトになったのですか?
% example 4
colormap(gray);
colormap('default');
figure;
for i=1:4
subplot(2,2,i);
imagesc(eye(5));
end