Matlab编写程序实现一个随机运动的小球

Matlab编写程序实现一个随机运动的小球,第1张

clc,clear;

%一个三维随机运动的小球

r=05;%球的半径

%运动的范围

x1=0;x2=30;

y1=0;y2=30;

z1=0;z2=30;

%初始位置  随机生成

x0=rand(1)(x2-x1-2r)+x1;

y0=rand(1)(y2-y1-2r)+y1;

z0=rand(1)(z2-z1-2r)+z1;

pos=[x0;y0;z0];

figure(1)

[x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r);

surf(x,y,z,ones(size(x))) %画出来球

n=200;%随机运动的次数

p=1;  %p可以用来控制每次运动距离的大小

for i=1:n

    %产生运动的方向与运动距离,用一个随机向量表示

    s=0;

    while(s==0)

        direct=rand(3,1)-05;

        dd=direct/norm(direct,2);

        dd=ddp;

        post=pos+dd;

        if (post(1)>=x1+r&&post(1)<=x2-r)&&(post(2)>=y1+r&&post(2)<=y2-r)&&(post(3)>=z1+r&&post(3)<=z2-r)

            s=1;

        end

    end

    pos=pos+dd;

    [x,y,z]  = ellipsoid(pos(1),pos(2),pos(3),r,r,r);

    surf(x,y,z,ones(size(x))) %画出来球

    axis([x1 x2 y1 y2 z1 z2])

    pause(01);  %设置暂停时间

end

因为是随机运动   如果每次运动的距离设置的不大,小球基本上是在初始位置的范围内运动

这样改:

clc

clear

SNR_DB=0:1:12;

sum=1000000;

data= randsrc(sum,2,[0 1]);

[a1,b1]=find(data(:,1)==0&data(:,2)==0);

message(a1)=-1-1i;

[a2,b2]=find(data(:,1)==0&data(:,2)==1);

message(a2)=-1+1i;

[a3,b3]=find(data(:,1)==1&data(:,2)==0);

message(a3)=1-1i;

[a4,b4]=find(data(:,1)==1&data(:,2)==1);

message(a4)=1+1i;

scatterplot(message)

title('B点信号的星座图')

A=1;

Tb=1;

Eb=AATb;

P_signal=Eb/Tb;

NO=Eb/(10^(SNR_DB/10));

P_noise=P_signalNO;

sigma=sqrt(P_noise);

for Eb_NO_id=1:length(sigma)

noise1=sigma(Eb_NO_id)randn(1,sum);

noise2=sigma(Eb_NO_id)randn(1,sum);

receive=message+noise1+noise21i;

%resum=0;

%total=0;

m1=find(angle(receive)<=pi/2&angle(receive)>0);

remessage(1,m1)=1+1i;

redata(m1,1)=1;

redata(m1,2)=1;

m2= find( angle(receive)>pi/2&angle(receive)<=pi);

remessage(1,m2)=-1+1i;

redata(m2,1)=0;

redata(m2,2)=1;

m3=find( angle(receive)>-pi&angle(receive)<=-pi/2);

remessage(1,m3)=-1-1i;

redata(m3,1)=0;

redata(m3,2)=0;

m4=find( angle(receive)>-pi/2&angle(receive)<=0);

remessage(1,m4)=1-1i;

redata(m4,1)=1;

redata(m4,2)=0;

[resum,ratio1]=symerr(data,redata);

pbit(Eb_NO_id)=resum/(sum2);

[total,ratio2]=symerr(message,remessage);

pe(Eb_NO_id)=total/sum;

end

scatterplot(receive)

title('C点信号的星座图')

Pe=1-(1-1/2erfc(sqrt(10^(SNR_DB/10)/2)))^2;

Pbit=1/2erfc(sqrt(10^(SNR_DB/10)/2));

figure(3)

semilogy(SNR_DB,pe,':s',SNR_DB,Pe,'-',SNR_DB,pbit,'-o',SNR_DB,Pbit,':+')

legend('QPSK仿真误码率','QPSK理论误码率','QPSK仿真误比特率','QPSK理论误比特率')

xlabel('信噪比/dB')

ylabel('概率P')

grid on

该序列的分子分母都是斐波那契数列。

参考代码(分别求符号解和数值解):

>> N=15;

>> F=1:N+1;

>> for i=3:length(F),F(i)=F(i-1)+F(i-2);end

>> sym(F(2:end)/F(1:end-1))' 

ans = 

[        2]

[      3/2]

[      5/3]

[      8/5]

[     13/8]

[    21/13]

[    34/21]

[    55/34]

[    89/55]

[   144/89]

[  233/144]

[  377/233]

[  610/377]

[  987/610]

[ 1597/987]

 

>> sum(sym(F(2:end)/F(1:end-1)))

ans =

519031694223200569/21124532855265840

 

>> sum(F(2:end)/F(1:end-1))

ans =

   245701

以上就是关于Matlab编写程序实现一个随机运动的小球全部的内容,包括:Matlab编写程序实现一个随机运动的小球、求解以下matlab程序!、matlab程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10110352.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存