📄 rayleigh.m
字号:
function [sys,x0,str,ts]=rayleigh(t,x,u,flag,N)
switch flag,
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 3
sys=mdlOutputs(t,x,u);
case {1,2,4,9}
sys=[];
otherwise
error(['Unhandled flag= ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes()
sizes=simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=0;
sizes.NumOutputs=512;
sizes.NumInputs=0;
sizes.DirFeedthrough=0;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
str=[];
x0=[];
ts=[0.25 0];
%函数的初始化结束
%--------------------------------------------------------------------------
function sys=mdlOutputs(t,x,u)
N=512;
fm=100;
delta_f=2*fm/(N-1);
T=1/delta_f;
I_input_time=randn(1,N);
Q_input_time=randn(1,N);
I_input_freq=fft(I_input_time);
Q_input_freq=fft(Q_input_time);
for j=2:N-1
f(j)=-100+(j-1)*200/(N-1);
SEZ(j) = 1.5/(pi*fm*sqrt(1-(f(j)/fm)^2));
end
f(1)=-99.99;f(N)=99.99;
SEZ(1) = 1.5/(pi*fm*sqrt(1-(f(1)/fm)^2));
SEZ(N) = 1.5/(pi*fm*sqrt(1-(f(N)/fm)^2));
I_output_freq = I_input_freq.* sqrt(SEZ);
Q_output_freq = Q_input_freq.* sqrt(SEZ);
I_output_time=ifft(I_output_freq);
Q_output_time=ifft(Q_output_freq);
r=abs(I_output_time + i*Q_output_time);
sys=10*log10(r);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -