【问题标题】:MATLAB: find intersection points with "solve" [circle + linear equation]MATLAB:找到与“求解”[圆+线性方程]的交点
【发布时间】:2013-10-08 09:16:33
【问题描述】:

我想在直线穿过圆的中心 (x,y) 时找到两 (2) 个交点。

r  =  13   radius
x  =  0    x-coordinate
y  =  7    y-coordinate
k  =  9    slope value(?) y=kx+m y=9x+m

所以首先我要画一个 r=13 和中心为 (0,7) 的圆。

r=13
x=0
y=7
k=9

hold on
z = 0:pi/50:2*pi;
xunit = r * cos(z) + x;
yunit = r * sin(z) + y;
plot(xunit, yunit);

我想知道是否有可能以更简单的方式绘制一个圆圈?类似的东西

(x−cx)^2 + (y −cy)^2 = r^2
(x-0)^2 + (y-7) = 13^2

我试过了

plot((x−cx)^2 + (y −cy)^2 = r^2)

它根本不做任何事情,所以代码一定是不正确的。

那我通过计算画出线性方程

y=kx+m
k=9

这条线穿过 (0,7)

7=9*0+m
m=7
y=9x+7

所以由于我是 MatLab 的新手,所以我花了一段时间才真正划清界限。我没有找到任何简单的函数来绘制它,所以我绘制了这样一条线:

我为 x 或 y 取了一些随机值并计算了一些坐标。

(0,7) 
(2,25)
(-2,-11)

plot([-2,2],[-11,25])

结果图片:http://i.imgur.com/ag6HJlm.jpg

所以现在我只需要用“解决”功能解决交点。太好了,我真的很感激一些帮助!

最好的问候

【问题讨论】:

  • 为什么要使用solve?为什么不只是分析解决它?
  • 您可以使用映射工具箱吗?如果是,请使用 linecirc()
  • 这是一项学校任务,我“必须”使用求解功能... lhcgeneva 你能详细解释一下吗?我应该用 linecirc() 做什么才能用solve() 解决它? [xout,yout] = linecirc(9,intercpt,0,7,13)
  • 是的,我有地图工具箱!
  • 阅读:mathworks.co.uk/help/symbolic/…solve 的文档

标签: matlab


【解决方案1】:

这是一种解决方法:

%Place your lines and figures on the grid
linexypos = eye(100);
shapexypos = flipud(eye(100)) ;

% Guess where they come together
intersection = filter2(ones(3),linexypos + shapexypos);
[quality, loc] = max(intersection(:))

请注意,您必须猜测,因为宽度为 1 像素的两条线的位置可能并不完全相同。 (考虑[1 0; 0 1][0 1;1 0],它们交叉但从不完全重叠)。

如果你想形象化这种情况,试试contour(intersection)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多