clear clc c=3.0e8; e=1.60210e-19; me=9.10908e-31; epsilon=8.854187818e-12; %真空介电常数 h=6.626e-34; K1=2^8-1; %光束的精度 lamda=800e-9; %波长 omega=2*pi*c/lamda; %角频率 k0=2*pi/lamda; %波数 w0=1e-5;% 10um %束腰半径,光束的宽度 Sr0=5e-04;% 0.5mm %光束半径 r0=6; %10um aa=0.9; sigma=1.2; %非局域系数σ
时间: 2024-03-19 12:41:57 浏览: 159
这段代码定义了一些常数和参数,包括真空中的光速 c、元电荷 e、电子质量 me、真空介电常数 epsilon、普朗克常数 h、光束的精度 K1、波长 lamda、角频率 omega、波数 k0、束腰半径 w0、光束半径 Sr0、光束半径 r0、非局域系数 aa 和非局域系数 sigma。其中,部分常数和参数可以用于计算光学相关的物理量,例如角频率、波数、束腰半径等等。而非局域系数 aa 和 sigma 则通常用于描述光的传播特性,例如光束的散焦和衍射等现象。
相关问题
clear clc c=3.0e8; e=1.60210e-19; me=9.10908e-31; epsilon=8.854187818e-12; %真空介电常数 h=6.626e-34;
这段代码定义了几个常量,包括:
- `c`:光速,值为 3.0e8。
- `e`:元电荷,即电子的电荷量,值为 1.60210e-19。
- `me`:电子质量,值为 9.10908e-31。
- `epsilon`:真空介电常数,值为 8.854187818e-12。
- `h`:普朗克常数,值为 6.626e-34。
在这段代码中,`clear` 和 `clc` 分别是清空工作空间和命令行窗口的命令。定义这些常量可以方便后续的计算。
clear; close all; clc; q=1.6e-19; Ib=202e-6; N0=2*q*Ib; Rb=1e6; Tb=1/Rb; R=1; sig_length=1e6; D=5; c=0.15; nt=0.1289; nr=0.9500; N = 10^5; Eb_N0_dB = 1:15; Eb_N0 = 10.^(Eb_N0_dB./10); M = 4; k = 2; s0 = [1 0 0 0]; s1 = [0 1 0 0]; s2 = [0 0 1 0]; s3 = [0 0 0 1]; alpha = [1 2 3 4]; for ii = 1:length(Eb_N0) transmit = randsrc(1,N,alpha); receive = zeros(1,N); P_avg(ii)=sqrt(N0*Rb*Eb_N0(ii)/(2*R^2)); i_peak(ii)=2*R*P_avg(ii); Ep(ii)=i_peak(ii)^2*Tb; sgma(ii)=sqrt(N0*Ep(ii)/2); th=0.5*Ep(ii); for jj = 1:length(transmit) y = zeros(1,4); if transmit(jj) == 1 y =nt*nr.*s0.*exp(-c*D)+sgma(ii)*randn(size(s2)); elseif transmit(jj) == 2 y = nt*nr.*s1.*exp(-c*D)+sgma(ii)*randn(size(s2)); elseif transmit(jj) == 3 y = nt*nr.*s2.*exp(-c*D)+sgma(ii)*randn(size(s2)); elseif transmit(jj) == 4 y = nt*nr.*s3.*exp(-c*D)+sgma(ii)*randn(size(s2)); end y(find(y>th))=1; cmetrics = [dot(y,s0) dot(y,s1) dot(y,s2) dot(y,s3)]; [C, receiveindex] = max(cmetrics); receive(jj) = receiveindex; end errorCount(ii) = nnz([receive - transmit]); end totalError = errorCount/N代码逐句解释
这段代码实现了一个基本的QPSK数字通信系统的仿真,其中QPSK是一种调制方式,将数字信息编码成一个复数信号,其中每个复数点代表两个比特(bit)的信息。下面对代码逐句解释:
```
clear; close all; clc;
```
清空变量,关闭所有的图形窗口,清空命令行窗口。
```
q=1.6e-19; Ib=202e-6; N0=2*q*Ib; Rb=1e6; Tb=1/Rb; R=1; sig_length=1e6; D=5; c=0.15;
```
定义常量,包括电子电荷q、电流Ib、噪声功率谱密度N0、码率Rb、码元时间Tb、电阻R、信号长度sig_length、传播距离D和损耗系数c。
```
nt=0.1289; nr=0.9500; N = 10^5; Eb_N0_dB = 1:15; Eb_N0 = 10.^(Eb_N0_dB./10); M = 4; k = 2;
```
定义常量,包括发射端天线增益nt、接收端天线增益nr、发送比特数N、信号能量与噪声功率比Eb/N0(单位为分贝)、调制方式M(这里为QPSK)和每个符号所代表的比特数k。
```
s0 = [1 0 0 0]; s1 = [0 1 0 0]; s2 = [0 0 1 0]; s3 = [0 0 0 1]; alpha = [1 2 3 4];
```
定义4个QPSK调制点,每个点代表两个比特,因此一个符号可以代表4个比特。alpha定义了4个调制点所对应的整数值,分别是1、2、3、4。
```
for ii = 1:length(Eb_N0)
```
循环,从Eb/N0的最小值开始,逐渐增加。
```
transmit = randsrc(1,N,alpha);
```
产生长度为N的随机整数向量,取值为alpha中的四个整数。
```
receive = zeros(1,N);
```
初始化接收向量。
```
P_avg(ii)=sqrt(N0*Rb*Eb_N0(ii)/(2*R^2));
```
计算平均功率。
```
i_peak(ii)=2*R*P_avg(ii);
```
计算峰值电流。
```
Ep(ii)=i_peak(ii)^2*Tb;
```
计算每个符号的能量。
```
sgma(ii)=sqrt(N0*Ep(ii)/2);
```
计算噪声标准差。
```
th=0.5*Ep(ii);
```
计算判决门限。
```
for jj = 1:length(transmit)
```
循环,处理每个发送比特。
```
y = zeros(1,4);
```
初始化接收信号向量。
```
if transmit(jj) == 1
y =nt*nr.*s0.*exp(-c*D)+sgma(ii)*randn(size(s2));
elseif transmit(jj) == 2
y = nt*nr.*s1.*exp(-c*D)+sgma(ii)*randn(size(s2));
elseif transmit(jj) == 3
y = nt*nr.*s2.*exp(-c*D)+sgma(ii)*randn(size(s2));
elseif transmit(jj) == 4
y = nt*nr.*s3.*exp(-c*D)+sgma(ii)*randn(size(s2));
end
```
模拟信号在传输过程中的衰减和噪声影响。
```
y(find(y>th))=1;
```
判决,如果接收信号大于判决门限,则判定为1。
```
cmetrics = [dot(y,s0) dot(y,s1) dot(y,s2) dot(y,s3)];
```
计算接收信号与四个调制点之间的相关性。
```
[C, receiveindex] = max(cmetrics);
```
找到相关性最大的调制点。
```
receive(jj) = receiveindex;
```
记录接收到的比特值。
```
end
```
处理完一个符号,继续处理下一个符号。
```
errorCount(ii) = nnz([receive - transmit]);
```
计算误比特率。
```
end
```
处理完所有的Eb/N0值。
```
totalError = errorCount/N
```
计算误比特率。
阅读全文
相关推荐

















