weixin_38847143 2019-11-30 11:39 采纳率: 14.3%
浏览 615
已结题

怎样对ADS-B信号进行IQ调制,自己尝试着写,发现最后的IQ样本不对?

clear all;
clc;

% load('E:\ADS-B Receiver-V1\TestData\ABC123.mat');
% load('E:\ADS-B Receiver-V1\TestData\Binary20_24_28.mat');
% Data_Block=round(rand(1,112));

AA = '780123';
Lon = 113.23;
Lat = 35.15;
Alt = 32500;
[Data_Block_odd,Data_Block_even] = Data_Block_Generate(AA,Lon,Lat,Alt);

%实现中频10MHz ASK调制
IFCarr_Fre=10e6;
Sample_Fre=50e6;
%时延
delay_odd=0;%us
delay_even=0;%us
SNR1=25;

[sl1,ADSB_1090ES_Signal_odd1]=ADSB_1090ES_Generate(Data_Block_odd,IFCarr_Fre,Sample_Fre,delay_odd,SNR1);
[sl2,ADSB_1090ES_Signal_even1]=ADSB_1090ES_Generate(Data_Block_even,IFCarr_Fre,Sample_Fre,delay_even,SNR1);

slu = [sl1,zeros(1,300),sl2];
sl1n=sqrt(10.^(25/10)).*slu + randn(1,12300);%randn 正太分布的随机数

ADSB_1090ES_Signal = [ADSB_1090ES_Signal_odd1,ADSB_1090ES_Signal_even1];
t=0:1/Sample_Fre:1/Sample_Fre*(length(ADSB_1090ES_Signal)-1);

%save ADSB_1090ES_Signal ADSB_1090ES_Signal1 ADSB_1090ES_Signal11 ADSB_1090ES_Signal2 ...
% ADSB_1090ES_Signal21 ADSB_1090ES_Signal3 ADSB_1090ES_Signal31;
%ADSB_1090ES_Data1 = downsample(ADSB_1090ES_Data,4);
%ADSB_1090ES_Signal1 = downsample(ADSB_1090ES_Signal,4);
%t1 = downsample(t,4);
%
%ADSB_1090ES_Signal_Hil = hilbert(ADSB_1090ES_Signal);
%ADSB_1090ES_Signal_Hili = imag(ADSB_1090ES_Signal_Hil);
%sum(ADSB_1090ES_Signal.*ADSB_1090ES_Signal_Hili)
%fft_sig = fftshift(fft(ADSB_1090ES_Signal));
%fft_sigh = fftshift(fft(ADSB_1090ES_Signal_Hil));
%N=length(fft_sig);
%f=linspace(-Sample_Fre/2,Sample_Fre/2 - Sample_Fre/N,N);
%figure;
%subplot(211);
%plot(f,abs(fft_sig));
%subplot(212);
%plot(f,abs(fft_sigh));

%figure;
%plot(t.*1e6,20*log10(abs(ADSB_1090ES_Signal_Hil)));
%grid on;
%title('Hilbert变换后的信号波形');%
%
% ADSB_1090ES_Signal = downsample(abs(ADSB_1090ES_Signal_Hil),4);
%
% t1 = downsample(t,4);
figure(1);
plot(t.*1e6,ADSB_1090ES_Signal,'b');
grid on;
% legend('中频信号波形','Hilbert变换后的信号波形');
title('时域波形');xlabel('t/us');ylabel('幅度');

%数字正交调制
% IF1_carrier=10e6;
% IFCarr_dem = 2*Sample_Fre - IFCarr_Fre;

cosCar_IF1=cos(2*pi*IFCarr_Fre*t);
sinCar_IF1=sin(2*pi*IFCarr_Fre*t);
%同相分量
ADSB_1090ES_RecI =ADSB_1090ES_Signal .*cosCar_IF1;
%正交分量
ADSB_1090ES_RecQ =ADSB_1090ES_Signal .*sinCar_IF1;
%构建低通滤波器,截止频率为2MHz
%Lowpass=fir1(8,2e6/(Sample_Fre/2));%阶数目前是随意选的
% figure
% %低通滤波器的频率响应
% freqz(Lowpass,1);
%ADSB_1090ES_RecI_LP=filter(Lowpass,1,ADSB_1090ES_RecI);%同相分量
%ADSB_1090ES_RecQ_LP=filter(Lowpass,1,ADSB_1090ES_RecQ);%正交分量
%希尔伯特变换
ADSB_1090ES_Rec=ADSB_1090ES_RecI+1i*ADSB_1090ES_RecQ;
% ADSB_1090ES_Rec=abs(ADSB_1090ES_Rec);
% ADSB_1090ES_Rec=sqrt(ADSB_1090ES_Rec);

% delay=(30+8)/2;
% % the downsample for receive_signal
% ADSB_1090ES_Rec_downsample=downsample(ADSB_1090ES_Rec,2);
% % the delay adjust for filter
% re_detection= ADSB_1090ES_Rec_downsample(delay+1:end-delay);

%由于通过滤波器,产生了时延(线性相位)
%figure
%subplot(3,1,1);
%plot(t.*1e6,abs(ADSB_1090ES_RecI_LP));grid on;
%title('同相分量');xlabel('t/us');ylabel('幅度');
%subplot(3,1,2);
%plot(t.*1e6,abs(ADSB_1090ES_RecQ_LP));grid on;
%title('正交分量');xlabel('t/us');ylabel('幅度');
%subplot(3,1,3);
%plot(t.*1e6,abs(ADSB_1090ES_Rec));grid on;
%title('解调后信号');xlabel('t/us');ylabel('幅度');

%求调制信号的定积分
N = length(t)-1;
dt = 1/Sample_Fre;
integral_ADSB_1090ES_Rec(1)=0;
for i=1:N

integral_ADSB_1090ES_Rec(i+1)=integral_ADSB_1090ES_Rec(i)+ADSB_1090ES_Rec(i)*dt;
end

figure(2);

plot(t,integral_ADSB_1090ES_Rec); title('IQ信号');

save ADSB_1090ES_Signal_odd1

有偿求教
加v guxinan520

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-11-30 18:41
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序