function [p]=li8_16fun(rho_in_dB) %子程序得出运算误码率,用dB 值表示的信噪比为子程序的输入变量 rho=10^(rho_in_dB/10); Eb=rho; %每比特能量 if(rho>2) %如果 rho>2 优化 alpha alpha=2/rho; else %如果 rho<2 优化 alpha 结束 alpha=1; end sgma=sqrt(1/(2*alpha)); %噪声标准方差 N=10000; %传输的比特数 for i=1:N %产生数据序列 temp=rand; if(temp<0.5) data(i)=1; else data(i)=0; end end for i=1:N %查找接收信号 if(data(i)-0) %传输信号 r1c(i)=sqrt(Eb);r1s(i)=0; r2c(i)=0;r2s(i)=0; else r1c(i)=0;r1s(i)=0; r2c(i)=sqrt(Eb);r2s(i)=0; end if(rand<alpha) %以概率 alpha 加入噪声并确定接收信号 r1c(i)=r1c(i)+gnagauss(sgma); r1s(i)=r1s(i)+gnagauss(sgma); r2c(i)=r2c(i)+gnagauss(sgma); r2s(i)=r2s(i)+gnagauss(sgma); end end num_of_err=0; %进行判决并计算错误数目 for i=1:N r1=r1c(i)^2+r1s(i)^2; %第一判决变量 r2=r2c(i)^2+r2s(i)^2; %第二判决变量 if(r1>r2) decis=0; else decis=1; end if(decis~=data(i)) %如果存在错误,计数器计数 num_of_err=num_of_err+1; end end p=num_of_err/N; %计算误码率;没有定义gnagauss函数,帮我定义一个
时间: 2024-04-26 10:22:45 浏览: 14
好的,下面是一个定义 Gnagauss 函数的 MATLAB 代码:
function y = gnagauss(sigma)
% GNAGAUSS 生成一个服从 Gnagauss 分布的随机数
%
% sigma: Gnagauss 分布的标准差
%
% y: 服从 Gnagauss 分布的随机数
%
% Gnagauss 分布的概率密度函数为:
% f(x) = sqrt(2/pi) * exp(-2 * x^2 / sigma^2) * (2 * x^2 / sigma^2 + 1)
% 可以通过 Box-Muller 变换得到服从 Gnagauss 分布的随机数
u = randn(); % 生成标准正态分布随机数
v = randn(); % 生成标准正态分布随机数
x = sqrt(0.5) * (u + v); % 通过 Box-Muller 变换得到服从 N(0, 1) 的随机数
y = x * sigma / sqrt(2*(1+sigma^2)); % 通过线性变换得到服从 Gnagauss 分布的随机数
end
请将这段代码保存在一个名为 "gnagauss.m" 的文件中,然后将该文件与 li8_16fun.m 放在同一目录下即可。
相关问题
解释下面这段代码var t1 = document.getElementById("li1"); var t2 = document.getElementById("li2"); var t3 = document.getElementById("li3"); var t4 = document.getElementById("li4"); var t5 = document.getElementById("li5"); var t6 = document.getElementById("li6"); var t7 = document.getElementById("li7"); var t8 = document.getElementById("li8"); t1.onclick = function(){ loadCarList("carListByType","&type="+0); change("li1"); } t2.onclick = function(){ loadCarList("carListByType","&type="+1); change("li2"); }
这段代码首先通过 `getElementById()` 方法获取了一些元素,并将它们分别赋值给变量 `t1`、`t2`、`t3`、`t4`、`t5`、`t6`、`t7`、`t8`。这些元素的 ID 分别为 "li1"、"li2"、"li3"、"li4"、"li5"、"li6"、"li7"、"li8"。
接下来,代码为每个 `t1` 到 `t8` 元素添加了一个 `onclick` 事件处理程序。当用户点击这些元素时,会执行相应的函数。例如,对于 `t1` 元素,点击时会调用 `loadCarList("carListByType","&type="+0)` 函数,并将参数 "carListByType" 和 "&type=0" 传递给它。然后,会调用 `change("li1")` 函数,将参数 "li1" 传递给它。
类似地,对于 `t2` 元素,点击时会调用 `loadCarList("carListByType","&type="+1)` 函数,并调用 `change("li2")` 函数。
这段代码的目的是为这些元素绑定点击事件,并在点击时执行相应的函数。