如何找到一条直线和一条曲线?

96(30天)
我想找两个相交点的坐标horisontal线和图形之间的关系。我认为问题是没有匹配的值之间的行向量中的元素,所以当我尝试使用相交()我得到一个空集。知道这是如何做到的吗?谢谢。
在y轴上我有一个向量和强度水平,并在x轴上的位置。数据从一个文件中。
阿兹=负载(“profile_AZ_7cm_Full.mat”);
el =负载(“profile_EL_7cm_Full.mat”);
x = az.Position(1,1:结束);
intensity_az = 10 * log10 (sum (az.RF。^ 2));
normx_intensity = intensity_az-max (intensity_az);
y = el.Position(2, 1:结束);
intensity_el = 10 * log10 (sum (el.RF。^ 2));
normy_intensity = intensity_el-max (intensity_el);
l = 6;
isx = interp1 (normx_intensity l);
图;
次要情节(2,1,1)
情节(x * 1 e3 normx_intensity)
持有
yline(左)
标题(“梁剖面方位扫描”)
包含(的轴(毫米))
ylabel (“强度(dB)”)

接受的答案

明星黾
明星黾 2022年2月5日
另一种方法,
x = linspace (-15, 150);
x y = sinc (0.5 *);
l = 0.6;
[~,idx] = max (y);
xq (1) = interp1 (y (1: idx) x (1: idx), l);
xq (2) = interp1 (y (idx + 1:结束),x (idx + 1:结束),l);
情节(x, y)
持有
情节(x, 0.6 *(大小(x)),”:k”)
情节(xq, [1] * l,“xr”,“MarkerSize”,10)
持有
文本(xq, [1] * l,组成(' \ \ leftarrow x = % + .3f 'xq),“水平的”,“左”,“绿色”,“中间”,“旋转”,-90)
4评论
明星黾
明星黾 2022年2月5日
我的荣幸!
随意使用这种方法在你的答案。(我们通常互相学习,所以这是不被认为是“欺骗”,并不是“学习”)。例如 “zxi” 代码是一个改进的方法我以前别人发达,所以我就采用它来使用我的代码。

登录置评。

答案(1)

大卫。马塞罗说道
大卫。马塞罗说道 2022年2月4日
我有点ovewhelmed代码,所以我将给你一个定性的例子,而不是修改它。
x = (x1, x2, x3,___xn);% x数据的数组
y = [y1、y2、y3、___yn);%你y数据的数组
c = c0;%的y值直接水平线
f = @ (z) interp1 (x, y-c, z);%创建匿名函数表示曲线和直线之间的区别
ξ= fzero (f, x0);%发现函数的零(即。交点)
xi的价值取决于初始条件x0,所以您可能想要循环fzero几个x0值找到多个相交点。可能是这样的:
x0 = linspace (x1 xn 5);
i = 1:5
习(i) = fzero (f, x0 (i));%发现函数的零(即。交点)
结束
然后你可以做
ξ=独特(xi);
删除重复值。
希望这是有意义的。

下载188bet金宝搏


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!