问题
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