function piva = PiMonteCarlo(n)
% PiMonteCarlo(n),用随机投点法模拟圆周率pi,作出模拟图 n为投点次数,可以是非负整数标量
% 或向量
% piva = PiMonteCarlo(n),用随机投点法模拟圆周率pi,返回模拟值piva 若n为标量(向
% 量),则piva也为标量(向量)
x = 0;y = 0;d = 0;
m = length(n); % 求变量n的长度
pivalue = zeros(m,1); % 为变量pivalue赋初值
% 通过循环用投点法模拟圆周率pi
for i = 1:m
x = 2rand(n(i),1)-1; % 随机投点的横坐标
y = 2rand(n(i),1)-1; % 随机投点的纵坐标
d = x^2+y^2;
pivalue(i) = 4sum(d <= 1)/n(i); % 圆周率的模拟值
end
if nargout == 0
% 不输出圆周率的模拟值,返回模拟图
if m > 1
% 如果n为向量,则返回圆周率的模拟值与投点个数的散点图
figure; % 新建一个图形窗口
plot(n,pivalue,'k'); % 绘制散点图
h = refline(0,pi); % 添加参考线
set(h,'linewidth',2,'color','k'); % 设置参考线属性
text(105n(end),pi,'\pi','fontsize',15); % 添加文本信息
xlabel('投点个数'); ylabel('\pi的模拟值'); % 添加坐标轴标签
else
% 如果n为标量,则返回投点法模拟圆周率的示意图
figure; % 新建一个图形窗口
plot(x,y,'k'); % 绘制散点图
hold on;
% 绘制边长为2的正方形
h = rectangle('Position',[-1 -1 2 2],'LineWidth',2);
t = linspace(0,2pi,100); % 定义一个角度向量
plot(cos(t),sin(t),'k','linewidth',2); % 绘制单位圆
xlabel('X'); ylabel('Y'); % 添加坐标轴标签
title(['Pi的模拟值: ' num2str(pivalue)]); % 添加标题
axis([-11 11 -11 11]); axis equal; % 设置坐标轴属性
end
else
piva = pivalue; % 输出圆周率的模拟值
end
=============================================
p=PiMonteCarlo([1000:5000:50000])'
p =
Columns 1 through 7
32200 31093 31280 31328 31286 31500 31428
Columns 8 through 10
31427 31452 31472
clear;
close all;
Fd=1;%消息序列的采样速率
Fs=3Fd;%以调信号的采样速率
M=4;%4比特调制,qpsk
SNR=0:12;%去信噪比从0到12
SNR1=0:01:12;%步进为01
for n=1:length(SNR)%对每一snr计算一次
Eb_N0=10^(SNR(n)/10);%换算10进制
sgma=sqrt(1/(4Eb_N0));%噪声信号的平方差开根号
x=randint(10000,1,M);%产生10000个输入符号
y=dmodce(x,Fd,Fs,'psk',M);%调制
ynoise=y+sqrt(Fs/Fd)sgma(randn(length(y),1)+1irandn(length(y),1));%经过信道加噪声
z=ddemodce(ynoise,Fd,Fs,'psk',M);%解调
[numbers,pm(n)]=symerr(x,z);&求误符号率
end
for m=1:length(SNR1)%此循环用于画出理想的误符号率曲线
Eb_N0=10^(SNR1(m)/10);
pm1(m)=erfc(sqrt(log2(M)Eb_N0)sin(pi/M));
end
semilogy(SNR,pm,'-',SNR1,pm1);%纵坐标取对数
xlabel('信噪比SNR/db');
ylabel('误码率(pe)');
legend('仿真误码率曲线','理论误码率曲线');
以上就是关于Matlab蒙特卡洛法计算圆周率怎么写最快全部的内容,包括:Matlab蒙特卡洛法计算圆周率怎么写最快、求matlab大神解读 详细分析下下面这个程序吧 是关于QPSK蒙特卡洛仿真的、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)