在MATLAB中以一种颜色绘制二维高斯曲线,但透明度不同

在MATLAB中以一种颜色绘制二维高斯曲线,但透明度不同,matlab,matlab-figure,Matlab,Matlab Figure,我想在MATLAB中绘制高斯波函数的二维表示。我希望2D绘图是一种颜色(绿色),远离高斯曲线的中心是透明的 当我使用imagesc(就像在下一个代码中一样)时,我得到一个黑色正方形上的高斯分布(如下图所示) 我不想要黑色的背景,我想要高斯是一种颜色,但是远离中心是透明的,这样我就不会得到黑色的正方形,只有绿色的圆圈(在白色背景上),圆圈远离中心是透明的 我该怎么做 close all;clc figure xlim_min=-4; xlim_max=4; ylim_min=-4; ylim_m

我想在
MATLAB
中绘制高斯波函数的二维表示。我希望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])

要获得透明度,请使用图像的。在下面,我将显式计算透明度(
alpha
)作为数据值的仿射函数,以指定最小和最大透明度值;我将
AlphaDataMapping
设置为
none
,这样就可以在不做任何修改的情况下使用这些值

那么,更换你的线路

imagesc(x,y,w_函数)

请注意蓝色部分如何比黄色部分更透明(更小的
alpha


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

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])

对于“正方形”,我会将低于某个阈值的所有值设置为NaN。是否可以完全去掉高斯圆周围的正方形?还有,我怎样才能把颜色改成只有绿色?
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])