在MATLAB里用数值画的曲线怎么求其交点值并让其值在图上显示出来

AA=mean(A);
BB=mean(B);
CC=mean(C);
AAA=std(A);
BBB=std(B);
CCC=std(C);
AAAA=sort(A);
BBBB=sort(B);
CCCC=sort(C);
plot(AAAA,normpdf(AAAA,AA,AAA),'r');
hold on ;
plot(BBBB,normpdf(BBBB,BB,BBB),'b');
plot(CCCC,normpdf(CCCC,CC,CCC),'g');
hold off;
这里的A,B,C,是用来画图的数据~希望高手帮忙~可以多加分的~

第1个回答  推荐于2018-04-05
% P=intp(X1,Y1,X2,Y2)
% 求两组离散点序列的交点
% X1,Y1为第一组的横纵坐标,X2,Y2为第二组横纵坐标,横坐标必须为有序数列。
% 返回值P为交点坐标,两列矩阵,第一列为横坐标,第二列为纵坐标。
function P=intp(X1,Y1,X2,Y2)
X1=X1(:); % 变为列向量
X2=X2(:);
Y1=Y1(:);
Y2=Y2(:);
if max(X1)<min(X2) || max(X2)<min(X1)
P=[]; % 两个区间没有重叠,不可能有交点
return;
end
a=max(min(X1),min(X2));
b=min(max(X1),max(X2));
a1=find(X1>=a); a1=a1(1);
a2=find(X2>=a); a2=a2(1);
b1=find(X1<=b); b1=b1(end);
b2=find(X2<=b); b2=b2(end);
x=unique([X1(a1:b1); X2(a2:b2)]);
y1=interp1(X1,Y1,x,'linear');
y2=interp1(X2,Y2,x,'linear'); % 找出公共部分

d=y1-y2;
ind0=find(d==0); % 差为0的是交点。
P1=[x(ind0), y1(ind0)];

d1=sign(d); % 求符号,负数为-1,正数为1, 0为0
d2=abs(diff(d1));
ind1=find(d2==2); % 相邻符号相差2的,交点在此区间内
P2=zeros(length(ind1),2);
for k=1:length(ind1)
i1=ind1(k);
i2=ind1(k)+1;
x1=x(i1);
x2=x(i2);
ya1=y1(i1);
ya2=y1(i2);
yb1=y2(i1);
yb2=y2(i2); % 两条线段四个端点坐标
A=[ ya1-ya2, -(x1-x2)
yb1-yb2, -(x1-x2)]; % 二元一次方程组系数矩阵
B=[ (ya1-ya2)*x1-(x1-x2)*ya1
(yb1-yb2)*x1-(x1-x2)*yb1]; % 常数项矩阵
P2(k,:)=(A\B)'; % 解方程组,得到交点坐标
end
P=[P1;P2]; % 两种情况的交点合并
P=sortrows(P,1); % 按横坐标排序
% 函数到此结束,保存到intp.m文件中

% 下面是接你的主程序来的,就是添在你画图那段程序后面
XA=AAAA;
YA=normpdf(AAAA,AA,AAA);
XB=BBBB;
YB=normpdf(BBBB,BB,BBB);
XC=CCCC;
YC=normpdf(CCCC,CC,CCC);
P1=intp(XA,YA,XB,YB); % A,B交点,调用上面保存的那个intp函数
P2=intp(XB,YB,XC,YC); % B,C交点
P3=intp(XC,YC,XA,YA); % C,A交点
P=[P1;P2;P3];

% plot(XA,YA,XB,YB,XC,YC)
hold on
plot(P(:,1),P(:,2),'ro')
hold off
str=cell(size(P,1),1);
for k=1:size(P,1)
str{k}=sprintf(' (%2.2g,%2.2g)',P(k,1),P(k,2));
end
text(P(:,1),P(:,2),str)
% 主程序到此结束本回答被提问者和网友采纳

在MATLAB里用数值画的曲线怎么求其交点值并让其值在图上显示出来
P=intp(X1,Y1,X2,Y2)求两组离散点序列的交点 X1,Y1为第一组的横纵坐标,X2,Y2为第二组横纵坐标,横坐标必须为有序数列。返回值P为交点坐标,两列矩阵,第一列为横坐标,第二列为纵坐标。function P=intp(X1,Y1,X2,Y2)X1=X1(:);变为列向量 X2=X2(:);Y1=Y1(:);Y2=Y2(:)...

在MATLAB里用数值画的曲线怎么求其交点值并让其值在图上显示出来
比如上面2条曲线为AAA,BBB [x y]=find(AAA==BBB);这就是交点坐标 hold on plot(x,y,'+')试试吧,不知道能不能成功

MATLAB中怎么求两条曲线的交点并标注
1、利用plot()绘制两条颜色不同、线型不同的曲线,y1和y2有几个交点。x=0:pi\/100:4*pi;y1=sin(x);y2=cos(x);plot(x,y1,'g--',x,y2,'b')2、取y1,y2相等点的坐标,并将两条曲线相等的点表示为y3。x1=x(k);y3=sin(x1);3、将y3与前面的y1,y2合并得到两条曲线相交的点。...

matlab如何提取一条曲线与y=50直线的交点坐标?
1、分析:求曲线y=2*x^2与直线y=50的交点,只需要求解方程2*x^2=50即可 2、求解:打开matlab软件,在命令窗口输入如下代码:x = solve('2*x^2=50'),表示使用solve()函数解方程 3、结果如下:二、插值法求散点曲线与y=50直线的交点,散点数据为:x=[0.01 0.1 0.3 0.7 1 10 50...

matlab中怎么求两曲线交点
你的问题,应该分三步来求解。第一步:求出两条曲线方程;第二步:自定义所求的曲线方程,然后用fsolve()函数求出两条曲线的交点坐标。第三步:绘出两条曲线的图形和交点坐标的位置。实现过程:第一步:你已完成。第二、三步:运行结果 如需要详细代码,可以通过私信给你。

怎么用matlab绘制两函数图像且标出其交点?
计算机方法\/步骤1,打开 matlab,输入独立变量代码: x = linspace (0,8) ,用矢量形式创建 x。输入因变量表达式: y1 = sin (x) ,向量 y1的值是 x 坐标系中 x 的值,y2 = (sin (x))。Y 2的值是(s i n (x))。^ 2 type: plot (x,y1)并按 enter 以绘制 y1 = sin (x)4...

MATLAB中怎么求两条曲线的交点并标注?
用plot()函数,画出两条曲线。用text()函数,在两条曲线的交点附近标注交点坐标值。MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。它可以用于算法开发、数据可视化、数据分析以及...

matlab怎样自动标出交点坐标
取x在[0,2π] 内1000 个点时的 y 值,同时对数据 y 叠加一个正弦干扰信号得到 y1。画出(x,y)(x,y1)图形并对交点标注。matlab代码如下:clear x=linspace(0,2*pi,1000);y=exp(-0.5*x).*cos(x);yy=5*sin(x);y1=yy+y;%叠加正弦干扰信号得到y1 k=find(abs(y1-y)<=0.02);...

Matlab中,如何获得这个曲面与x=1,v3,e=300平面的交线并显示出来?
也就是找到交点 px=x(r0); % 取出交点的横坐标 py=y(r0); % 取出交点的纵坐标 pz=z1(r0); % 取出交点的竖坐标 plot3(px,py,pz,'*') % 根据取出的交点坐标画图,样式为*表示的点 colormap(gray) % 采用灰度色标,也就是你看到的曲面图是以灰色深浅表示z坐标大小的 ...

请问怎样在matlab中得到直线方程与plot出的曲线之间的交点坐标
首先需要明确:用plot画图其实是折线图,即每相邻两点之间用直线连接。画出图形来,从图中可见,有两个交点:一个交点位于折线的最后一段,纵坐标已知为471,则横坐标易得x=y+25=496;另一个交点位于点(334,324)和(361,323)连接的折线上,可以使用solve求解得到(9422\/27, 8747\/27)。参考代码...

相似回答