Как применить функции heatmap или images c на сюжете двумя линиями? - PullRequest
0 голосов
/ 04 апреля 2020

Мне нужно нарисовать свой сюжет 1 вот так 2 , но не как мне это сделать. Когда кривая касается красной линии, эта часть кривой становится красной [общая амплитуда увеличивается в области огибающей] 3 . Цвета (и цветная полоса) должны показывать изменение амплитуды. Как я понимаю, цвет меняется, потому что в параболе накапливается импульс (например, импульс Риккера).

clear all
phi=pi/6;
b=4000;
 if (phi>pi/4)|(phi<-pi/4)
    warndlg('Invalid value');
else
a=tan(phi);
x=-4000:100:4000;
y=zeros(1,length(x));
z=a*x+b;
plot(x,z,'r','LineWidth',3);xlim([-5000 9000]);ylim([0 7000]);
set(gca,'YDir','reverse');
xlabel('X,m');
zoom on
title({'Решение задачи сейсмического сноса' , 'для плоской наклонной границы методом огибающей'});
daspect([1 1 1])
zeta=z./cos(phi);
hold on[enter image description here][1]
dz=z*tan(phi)+x;
pause
plot(dz,zeta,'b','LineWidth',3);
pause
for i=1:4:length(x)
xk=x(i)-4000:12.5:x(i)+4000;    
d(i)=z(i)*tan(phi)+x(i);
hyp=sqrt((xk-x(i)).^2+z(i).^2);
p=plot(dz(i),zeta(i),'.k','MarkerSize',25);
plot(x(i),z(i),'.r','MarkerSize',25);
lz=plot([x(i) d(i)],[z(i)  0],'Color',[0.5 0.5 0.5]);
lzeta=plot([d(i) d(i)],[zeta(i) 0],'Color',[0.5 0.5 0.5]);
h=plot(xk,hyp,'k');
pause
delete(p)
delete(lz)
delete(lzeta)
plot(dz(i),zeta(i),'.c','MarkerSize',25);
delete(h)
plot(xk,hyp,'c');
end
end
clear all
close all
...