资源简介
matlab语言 分布傅里叶算法
+原始论文Optimization of the Split-Step Fourier Method in Modeling Optical-Fiber Communications Systems
代码片段和文件信息
function [Aoutnumber_of_fftsphadisp]=SSFM(Aindtdznzalphabetapgammatol);
% INPUT
% 利用对称分步傅立叶算法解决脉冲光信号在光纤中传输的非线性薛定谔方程
% Ain 初始脉冲的振幅(矢量)
% dt 取样周期
% dz 选择的初始步长
% nz 运算的总步数
% alpha 损耗系数
% betap 与频率有关的色散多项式
% gamma 非线性系数
% tol local error method tolerance
% OUTPUT
% Aout 输出信号的振幅
% number_off_ffts 传输过程中采用快速傅立叶变换算法的次数
N=length(Ain); %采样的点数N
w=2*pi*(-N/2:(N/2)-1)/(dt*N); % 频率(取样频率的整数倍)
Fiberlength=dz*nz; % 光纤长度
proplength=0; %传输长度
nf=0; %记录调用ffts的次数
ln=1; %计算相角色散用
% 线性算符
LinearOprator=-alpha/2;
for ii=1:length(betap);
LinearOprator=LinearOprator+j*betap(ii)*(-w).^(ii)/factorial(ii);
end
Afft=fft(Ain); %傅立叶变换
nf=nf+1; %累计
% LEM_SSFM
fprintf(‘\nSimulation running... ‘);
while(proplength if(dz+proplength)>Fiberlength
dz=Fiberlength-proplength;
end
Halfstep=exp(LinearOprator*dz/2);
Quarterstep=exp(LinearOprator*dz/4);
Ahalf=ifft(Halfstep.*Afft); %%%%%%%
nf=nf+1;
Aquarter=ifft(Quarterstep.*Afft); %%%这是在Af计算中能用到的
nf=nf+1;
Ac=Ahalf.*exp(-j*gamma*(abs(Ahalf.^2)*dz)); %%%非线性算子
Afftc=Halfstep.*fft(Ac);
nf=nf+1;
Ac=ifft(Afftc); %%%%Ac 粗略解
nf=nf+1;
Af=Aquarter.*exp(-j*gamma*(abs(Aquarter).^2)*dz/2); %%%Af 精细解
Afftf=Quarterstep.*fft(Af);
nf=nf+1;
Af=ifft(Afftf);
nf=nf+1;
Aquarter=ifft(Quarterstep.*Afftf);
nf=nf+1;
Af2=Aquarter.*exp(-j*gamma*(abs(Aquarter).^2)*dz/2);
Afftf=Quarterstep.*fft(Af2);
nf=nf+1;
Af=ifft(Afftf);
nf=nf+1;
%通过分析误差选择合适的步长dz
%参考Optimization of the Split-Step Fourier Method in Modeling
%Optical-Fiber Communications Systems 2003 IEEE
%Local-Error Method
Delta=sqrt(sum((abs(Af-Ac)).^2))/sqrt(sum((abs(Af)).^2)); %%%%%%%????????????????
if(Delta<(tol/2))
Aout=(4/3)*Af-(1/3)*Ac;
dd=atand((abs(imag(Aout)))/(abs(real(Aout)))); %反正切值并且结果用度数表示
phadisp(ln)=dd; %保存脉冲
ln=ln+1;
Afft=fft(Aout);
nf=nf+1;
proplength=proplength+dz; %%%%%%%%
dz=dz*(2^(1/3));
elseif(tol<=Delta<=(2*tol))
Aout=(4/3)*Af-(1/3)*Ac;
dd=atand((abs(imag(Aout)))/(abs(real(Aout)))); %反正切值并且结果用度数表示
phadisp(ln)=dd; %保存脉冲
ln=ln+1;
Afft=fft(Aout);
nf=nf+1;
proplength=proplength+dz;
dz=dz/(2^(1/3));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%后加%%%%%%%%%%%%%
elseif((Delta>2*tol))
Aout=(4/3)*Af-(1/3)*Ac;
dd=atand((abs(imag(Aout)))/(abs(real(Aout)))); %反正切值并且结果用度数表示
phadisp(ln)=dd; %保存脉冲
ln=ln+1;
Afft=fft(Aout);
nf=nf+1;
proplength=proplength+dz;
dz=1/2*dz
%%%%%%%%%%%%%%%%%%%%%%%%%%后加%%%%%%%%%%%%%%%
else
Aout=(4/3)*Af-(1/3)*Ac;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 173288 2008-03-18 15:53 分布傅里叶\Optimization of the Split-Step Fourier Method in Modeling Optical-Fiber Communications Systems.pdf
文件 3610 2008-06-05 22:57 分布傅里叶\分步傅里叶算法.m
目录 0 2010-02-26 14:36 分布傅里叶
----------- --------- ---------- ----- ----
176898 3
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论