ZC序列 DMRS Hls 仿真学习

clc;clear;close all;
%% 0、fft
test = fft(ones(1,10));%[10,0....0]
%% 1、对称函数
% 若函数y=f(x)关于直线x=a对称(当a=0时即关于y轴对称),则f(a+x)=f(a−x),反之亦成立
t = 0:0.1:2*pi;
figcnt=0;
f = sinc(t);
figcnt = figcnt+1;
figure(figcnt);
plot(t,f,'r');
grid minor;

hold on;
t1=-1*t;%%%对称函数的方法!!
f1 = sinc(t1);
plot(t1,f1,'g');
hold off;
%% 2、zc序列相关性仿真
%------------------zc序列产生------------------
% prach parameter
L_RA = 839;
u = 20;
u2 = 21;
x_u = zeros(1,L_RA);
x_u2 = zeros(1,L_RA);
Cv = 100;

%zc 序列
for i = 0:1:L_RA-1
    x_u(i+1) = exp(-1i*pi*u*i*(i+1)/L_RA);
end

%不同根序列
for i = 0:1:L_RA-1 
    x_u2(i+1) = exp(-1i*pi*u2*i*(i+1)/L_RA);
end

%相同根序列不同循环移位
x_uv = zeros(1,L_RA);
for i = 0:1:L_RA-1
    x_uv(i+1) = x_u(mod(i+Cv,L_RA)+1);%序列值不变,进行了循环移位(0点位置变了)
end

%加噪声
x_u = x_u + randn(1,length(x_u));
x_uv = x_uv + randn(1,length(x_uv));
x_u2 = x_u2 + randn(1,length(x_u2));

%------------------序列运算------------------
% zc序列fft仍然是zc序列.上面的序列即可认为是时域,又可认为是频域:
%   1、看做时域时,可以直接在时域做相关,也可根据相关->卷积<->共轭乘->ifft求相关。
%   2、看做频域时,直接共轭乘->ifft求相关
% 相关,最终看的是时域。

%-------1、把上面的序列看做时域
%时域->频域->共轭乘->ifft
f1 = fft(x_u).* conj(fft(x_u+x_uv));%频域侧计算时,先转到频域。多UE
f1_ifft = ifft(f1);

figcnt = figcnt+1;
figure(figcnt);
subplot(4,1,1);
plot((0:length(f1_ifft)-1), abs(f1_ifft), 'b');
xlabel('Time');ylabel('Amplitude');title('时域数据,转频域求相关');
grid minor;

%时域直接相关
f2 = xcorr(x_u,x_u+x_uv);

subplot(4,1,2);
plot((0:length(f2)-1), abs(f2), 'g');
xlabel('Time');ylabel('Amplitude');title('时域数据,直接求相关');
grid minor;

%-------2、把上面的序列看做频域
f3 = x_u.* conj(x_u);%频域侧计算时,先转到频域。多UE

subplot(4,1,3);
plot((0:length(f3)-1), abs(ifft(f3)), 'r');
xlabel('Time');ylabel('Amplitude');title('频域数据,共轭乘后ifft求相关');
grid minor

%-------不同序列,取其中一种情况:看做时域
f4 = fft(x_u).*conj(fft(x_u2));
f4_ifft = ifft(f4);

subplot(4,1,4);
plot((0:length(f4_ifft)-1), abs(f4_ifft), 'r');
xlabel('Time');ylabel('Amplitude');title('不同μ时域数据,转频域求相关');
grid minor
%% 3、LS
A = 1;%信道幅度
k = 0:0.01:2;%频域
X = A*exp(1i*2*pi.*k);%本地DMRS=发端DMRS
N = randn(1,length(k));%noise
Y = X + N;
Hls = Y.*conj(X);%如果没有噪声的话,结果全1

figcnt = figcnt+1;
figure(figcnt);
plot((0:length(Hls)-1),abs(ifft(Hls)),'r');
xlabel('Time');ylabel('Amplitude');title('Hls');
grid minor;

hold on;
t_corr=xcorr(ifft(Y),ifft(X));
plot((0:length(t_corr)-1),abs(t_corr),'g');
hold off;

你可能感兴趣的:(5GNR,PHY,matlab,5g)