0

はどのように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
4

2 に答える 2

4

同じ Figure 内の関連するすべてのグラフィックス オブジェクトは、カラーマップを共有します。各 Figure は、'colormap'プロパティにカラーマップを保持します。例: get(gcf,'colormap').

colormap('NAME')現在の図に適用されます。これには の効果がありset(gcf,'ColorMap',cm)ます。

colormap(axisHandle,..)またはcolormap(figurehandle, ...)、カラーマップが設定されている Figure を明示的に識別します。構文は引き続き Figure のカラーマップを設定することに注意してくださいcolormap(axisHandle,..)。どの Figure が設定されているかを判断するために、軸ハンドルの親プロパティを使用するだけです。

于 2012-08-10T20:18:10.857 に答える
0

@Pursuitが説明したように、図には、その中に含まれるすべての軸/画像によって適用される単一のカラーマップしかありません。それにもかかわらず、これを克服する方法があります。

1 つの Figure で複数のカラーマップを使用するにはどうすればよいですか?

File Exchange にも便利な投稿があります。

freezeColors / unfreezeColors

于 2012-08-11T11:31:27.097 に答える