如何使用公式在Matlab中绘制椭圆

时间:2015-06-02 03:10:47

标签: matlab

我需要画这个:

![f=1 ( this is ellipse equation][1]

(2*X/(1+sgnX)*Rfoce-(1-sgnX)*Raft)^2+(2*Y/(1+sgnY)*Rstarb-(1-sgnY)*Rport)^2=1

sgnX=1 when X>=0
sgnX=-1 when X<0

-1*Raft=<X=<Rforce
-1*Rport=<Y<=Rstarp

我该如何画画?然而,我尝试绘制另一种形状而不是椭圆形。你能帮我吗?

RforceRaftRstarbRport是输入参数。

2 个答案:

答案 0 :(得分:1)

你可以用这个:

ezplot('你的椭圆方程'); 网格;

答案 1 :(得分:0)

我不认识椭圆方程的形式,但如果你想使用椭圆,你可以做这样的事情。函数椭圆可以采用

2个输入 - a,b 3输入 - a,b,theta 4个输入 - a,b,x0,y0 5个输入 - a,b,x0,y0,theta

其中theta是度。

唯一的非常见函数是flip翻转向量和nargin,它允许可变数量的输入。

x0 = -5;
y0 = 3;
a = 2;
b = 1;
theta = 7.5;

[x, y] = ellipse(a, b, x0, y0, theta);
plot(x, y)
axis equal

function [x,y] = ellipse(a, b, x0, y0, theta)

if nargin < 2
    disp('Please enter at least the semi-major and -minor axis')
elseif nargin == 2
    x0 = 0;
    y0 = 0;
    theta = 0;
elseif nargin == 3
    theta = x0;
    x0 = 0;
    y0 = 0;
elseif nargin == 4
    theta = 0;
elseif nargin ~= 5
    disp('Too many input arguements')
end

X = linspace(-a, a, 100);
Y = [b*sqrt(1 - (X/a).^2), -b*sqrt(1 - (flip(X)/a).^2)];
X = [X, flip(X)];

x = X * cosd(theta) - Y * sind(theta) - y0;
y = X * sind(theta) + Y * cosd(theta) - x0;

end