Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用matlab求交点_Matlab_Geometry_Intersect - Fatal编程技术网

用matlab求交点

用matlab求交点,matlab,geometry,intersect,Matlab,Geometry,Intersect,这是我的代码: %cirkel t=linspace(0,2*pi); r1=2; x1=r1.*cos(t); y1=r1.*sin(t); cirkel=plot(x1,y1); set(cirkel,'color','g') axis equal hold on %cardeoide t=linspace(0,2*pi); r2=2*(cos(t)+1); x2=r2.*cos(t); y2=r2.*sin(t); cardeoide=plot(x2,y2); set(cardeoid

这是我的代码:

%cirkel
t=linspace(0,2*pi);
r1=2;
x1=r1.*cos(t);
y1=r1.*sin(t);
cirkel=plot(x1,y1);
set(cirkel,'color','g')
axis equal
hold on

%cardeoide
t=linspace(0,2*pi);
r2=2*(cos(t)+1);
x2=r2.*cos(t);
y2=r2.*sin(t);

cardeoide=plot(x2,y2);
set(cardeoide, 'color','r')
hold off
我需要找到这些曲线相交的点。我通过做y1==y2和x1==x2来尝试它,但没有得到好的结果(得到了一个充满数字的矩阵)。然后我尝试了intersect(x1,x2)。也不是一个令人愉快的结果。然后我求助于这个。这给出了一个相当准确的结果。但是我不被允许使用这个代码(从学校)。所以我想知道有没有更简单的解决办法


thx提前

为了获得最准确的结果,不应使用采样点x1、x2、y1、y2。 这将是两条曲线的近似值,并且交点是采样点之一的概率很低

相反,建立方程以找到曲线相交的
t
,并求解它(x1(t)=x2(t)和y1(t)=y2(t))


注:当你掌握了MATLAB的工作原理后,当你做y1==y2和x1==x2时,你得到一个充满数字的矩阵的原因是非常明显的。

因为你在曲线上采样点,你永远不会在两条曲线上找到完全相同的点

所以。你应该设法找到距离最小的点

dists=pdist2([x1;y1],[x2;y2]);
[~,t1]=min(min(dists,[],2),[],1);
xInt1=x1(t1);
yInt1=y1(t1);
[~,t2]=min(min(dists,[],1),[],2);
xInt2=x2(t2);
yInt2=y2(t2);

你试过这个吗?因为我得到了这个错误:???使用==>min min与两个矩阵进行比较时出错,不支持两个输出参数。好的,部分原因是x1和y1的技巧似乎是正确的(0,2),但如图中所示,第二个明显为负的y是4,而不是-2。(我还认为x和y是切换的,因为x值都应该在0左右,而不是2和4)