在MATLAB中以一种颜色绘制2D高斯,但是可以提高透明度

时间:2017-11-14 12:21:45

标签: matlab matlab-figure

我想在MATLAB中绘制高斯波函数的2D表示。我希望2D绘图是一种颜色(绿色),它远离高斯的中心变得透明。

当我使用imagesc时(如下一个代码中所示),我在黑色方块上得到高斯(如下图所示)。

我不想要黑色背景,我希望高斯是一种颜色,但远离中心透明,这样我就不会得到黑色正方形,只有绿色圆圈(白色)背景)圆圈远离其中心透明。

我该怎么做?

close all;clc

figure
xlim_min=-4;
xlim_max=4;
ylim_min=-4;
ylim_max=4;

ylim([ylim_min ylim_max])
xlim([xlim_min xlim_max])

x=-1:0.001:1;  
y=-1:0.001:1;  
[X,Y]=meshgrid(x,y);

c1=10;
c1_new=c1*0.3;
x_offset=0;
y_offset=0;

w_function=0.5*0.25*exp(-c1_new*((X+x_offset).^2+...
                                      (Y+y_offset).^2));

imagesc(x,y,w_function);

ylim([ylim_min ylim_max])
xlim([xlim_min xlim_max])

enter image description here

1 个答案:

答案 0 :(得分:2)

要获得透明度,请使用图片的AlphaData and AlphaDataMapping properties。在下文中,我明确地将透明度(alpha)计算为数据值的仿射函数,以指定最小和最大透明度值;并且我将AlphaDataMapping设置为none,因此无需任何修改即可使用这些值。

所以,替换你的行

  

imagesc(x,y,w_function);

通过

min_alpha = .2; % desired minimum alpha
max_alpha = 1; % desired maximum alpha
alpha = min_alpha + (max_alpha-min_alpha)/max(w_function(:))*w_function; % compute alpha
imagesc(x,y,w_function,'AlphaData',alpha,'AlphaDataMapping','none'); % image with alpha

注意蓝色部分比黄色部分更透明(更小alpha)。

enter image description here

要使颜色混合与外部区域平滑,请设置alpha的最小0并在更大的网格上定义函数。如果需要,您还可以更改色彩映射。由于透明度已经变化,您可能希望色彩映射中的颜色恒定。

close all;clc

figure
xlim_min=-4;
xlim_max=4;
ylim_min=-4;
ylim_max=4;

ylim([ylim_min ylim_max])
xlim([xlim_min xlim_max])

x=-2:0.001:2; % large enough that the function approximately ...
y=-2:0.001:2; % ... reaches 0 within this rectangle
[X,Y]=meshgrid(x,y);

c1=10;
c1_new=c1*0.3;
x_offset=0;
y_offset=0;

w_function=0.5*0.25*exp(-c1_new*((X+x_offset).^2+...
                                      (Y+y_offset).^2));

min_alpha = 0; % desired minimum alpha: set to 0
max_alpha = 1; % desired maximum alpha
alpha = min_alpha + (max_alpha-min_alpha)/max(w_function(:))*w_function; % compute alpha
imagesc(x,y,w_function,'AlphaData',alpha,'AlphaDataMapping','none'); % image with alpha
cm = [0 .7 0]; % define colormap: single color, dark green
colormap(cm) % apply colormap

ylim([ylim_min ylim_max])
xlim([xlim_min xlim_max])

enter image description here