
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程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)