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