Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
288 views
in Technique[技术] by (71.8m points)

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

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.

enter image description here

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...