高手指点,MATLAB 如何在一个长轴为20 短轴为椭圆5的内产生14个随机数?

如题所述

程序如下:

clear;clc

a=5;b=20;

t=-2*pi:0.001:2*pi;

x=a*sin(t);

y=b*cos(t);

plot(x,y)

xlist = []; % 存放结果的数组

ylist = [];

cnt = 0;

while cnt < 100%产生椭圆内点

    x1 = randi(100,1,1)/10;%产生随机数

    y1 =randi(100,1,1)/10;

  

    if (x1/a)^2 + (y1/b)^2  < 1 % 判断是否在椭球内部

        cnt = cnt + 1;

        xlist(cnt) = x1;

        ylist(cnt) = y1;

        disp(['输出随即数 ('  num2str(xlist(cnt))  ',' num2str(ylist(cnt)) ')'])

    end

end

hold on

plot(xlist, ylist, '.r'); % 绘制点的分布的点

legend('椭圆' ,'随机点')

grid on

追问

非常感谢,我的表达有误,我是想产生一个形状为椭圆的随机数据集(可以在椭圆边上也可以在椭圆内部),您可以把长轴设置很长,短轴短一点,麻烦您再给看看,再次感谢!

追答

这个怎么样。程序在附件中。


温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-05

给你一个代码

clear;
clc;
close all;


N=1500;

a=20;
b=5;

num=0;
X=[];
Y=[];
while( num<N )
    xi=rand()*2-1;
    yi=rand()*2-1;
    if( xi^2 + yi^2 <= 1 )
        X=[X; xi*a];
        Y=[Y; yi*b];
        num = num + 1 ;
    end
end


t=[-pi:0.1:pi pi];
x=a*cos(t);
y=b*sin(t);

figure;
hold on;
grid on;
axis equal;

plot(X,Y,'b.')
plot(x,y,'color','r','LineWidth',1.5)

xlim([-20 20]);
ylim([-10 10]);

legend('随机点','椭圆')

效果图如下:


本回答被提问者采纳

高手指点,MATLAB 如何在一个长轴为20 短轴为椭圆5的内产生14个随机数...
clear;clc a=5;b=20;t=-2*pi:0.001:2*pi;x=a*sin(t);y=b*cos(t);plot(x,y)xlist = []; % 存放结果的数组 ylist = [];cnt = 0;while cnt < 100%产生椭圆内点 x1 = randi(100,1,1)\/10;%产生随机数 y1 =randi(100,1,1)\/10;if (x1\/a)^2 + (y1\/b)^2 < 1...

现在已知椭圆的长轴和短轴的值,如何在matlab里面实现画出椭圆的图形呢...
theta=0:pi\/20:2*pi ;a=2;b=1;x=a.*cos(theta);y=b.*sin(theta);plot(x,y);a,b为长轴和短轴的值

我像用matlab画出一个椭球面,具体参数如图,希望有高手能帮我画一下
生成单位球面的数据(使用球面坐标,然后变换为直角坐标)n = 30;theta = (-n:2:n)\/n*pi;phi = (-n:2:n)'\/n*pi\/2;cosphi = cos(phi); cosphi(1) = 0; cosphi(n+1) = 0;sintheta = sin(theta); sintheta(1) = 0; sintheta(n+1) = 0;x = cosphi*cos(theta);y =...

椭圆周长怎么算呀?
椭圆周长没有精确的初等公式,但有非初等的椭圆积分形式的表达及其级数展开式,椭圆周长理论公式是存在的不过它不能用初等函数表示,它是一个与离心率有关的无穷收敛级数,本公式已经把正圆周长纳入其中,在某种意义上讲正圆是特殊的椭圆,也就是说正圆是长短轴相等的椭圆。公式推导是要利用到曲线长度积分...

相似回答