Filling between two curves, according to a colormap given by a function MATLAB

ε祈祈猫儿з 提交于 2019-12-14 03:18:04

问题


How can the area between two curves be filled by a colormap that fits the values of a function.

for example, here are the two curves, and the function of the values I would like to have in between

L=5;
x=1:10;
t=(1:10)/10;
figure(1)
subplot(2,1,1)
plot(x,t,x+L,t)
subplot(2,1,2)
plot(x,exp(-(x/L).^2))

The filled area should be taken from any colormap.


回答1:


With some basic indexing, rescaling of the gaussian length and line equation maths, we can do this by:

L=5;
x=1:10;
t=(1:10)/10;


[X,Y]=meshgrid(linspace(0,x(end)+L,500),linspace(0,t(end),500));

%slope of both lines
m=(t(2)-t(1))/(x(2)-x(1));

for ii=1:size(X,1)
z(ii,:)=exp(-((X(ii,:)-Y(ii,1)/m)/(L/2)).^2);
end


% basic line maths an dindexing
z(Y./X>m)=NaN;
z((Y+m*L)./X<m)=NaN;

surf(X,Y,z,'linestyle','none')
view(2)



来源:https://stackoverflow.com/questions/51770438/filling-between-two-curves-according-to-a-colormap-given-by-a-function-matlab

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!