基于GNURADIO的AM和FM信号解调软件开发
基于matlab的-AM-FM调制与解调报告
基于matlab的-AM-FM调制与解调报告AM调制与解调100%% AMµ÷ÖÆfigure('Name','Ðźŵ÷Öƹý³ÌÖв¨Ðμ°ÆäƵÆ×','NumberTitle','off')a0=1;f0=2000;fc=20000;fs=1000000;t=[1:0.000001:4];am1=0*cos(2*pi*f0*t); %µ÷ÖÆÐźÅam=a0+am1;t1=cos(2*pi*fc*t); %Ôز¨s_am=am.*t1;AM1=fft(am1); T1=fft(t1); S_AM=fft(s_am);f=(0:3000000)*fs/3000001-fs/2;subplot(3,2,1); plot(t(1:1000),am1(1:1000)); title('ÐÅÏ¢ÐźŲ¨ÐÎ');subplot(3,2,2); plot(f,fftshift(abs(AM1))); title('ÐÅÏ¢ÐźÅƵÆ×');subplot(3,2,3); plot(t(1:1000),t1(1:1000)); title('Ôز¨ÐźÅ');subplot(3,2,4); plot(f,fftshift(abs(T1))); title('Ôز¨ÐźÅƵÆ×');subplot(3,2,5); plot(t(1:1000),s_am(1:1000)); title('Òѵ÷ÐźÅ');subplot(3,2,6); plot(f,fftshift(abs(S_AM))); title('Òѵ÷ÐźÅƵÆ×');%²úÉúÔëÉùfigure('Name','Ìí¼ÓÔëÉù¼°´øͨÂ˲¨¹ý³Ì²¨Ðμ°ÆäƵÆ×','NumberTitle','off ');snr=5;y=awgn(s_am,snr);fcuts=[16000 17500 22500 24000];mags=[0 1 0];devs=[0.05 0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh,1,1024,fs);st_p=fftfilt(hh,y);Q=fft(st_p);Y=fft(y);f=(0:3000000)*fs/3000001-fs/2;subplot(2,2,1);plot(t(1500001:1501000),y(1500001:1501000));title('Ìí¼ÓÔëÉùºóÐźŲ¨ÐÎ');subplot(2,2,2);plot(f,fftshift(abs(Y)));title('Ìí¼ÓÔëÉùºóÐźÅƵÆ×');subplot(2,2,3);plot(t(1500001:1501000),st_p(1500001:1501000));title('´øͨÂ˲¨ºóÐźŲ¨ÐÎ');subplot(2,2,4); plot(f,fftshift(abs(Q)));title('´øͨÂ˲¨ºóÐźÅƵÆ×');%½âµ÷figure('Name','Ïà¸É½âµ÷ËùµÃ²¨Ðμ°ÆäƵÆ×','NumberTitle','off');ss_am=st_p.*t1;SS_AM=fft(ss_am)f=(0:3000000)*fs/3000001-fs/2;subplot(2,1,1);plot(t(1500001:1503000),ss_am(1500001:1503000));title( 'Ïà³ËÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(SS_AM)));title('Ïà³ËÐźÅƵÆ×');fcuts1=[2500,30000];mags1=[1 0];devs1=[0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts1,mags1,devs1,fs);hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh1,1,1024,fs);m0=fftfilt(hh1,ss_am);M0=fft(m0);f=(0:3000000)*fs/3000001-fs/2;figuresubplot(2,1,1);plot(t(1500001:1501000),m0(1500001:1501000));title('½âµ÷ÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(M0)));title('½âµ÷ÐźÅƵÆ×');11.0005 1.001-101信息信号波形-505x 1050126信息信号频谱11.0005 1.001-101载波信号-505x 1050126载波信号频谱11.00051.001-202已调信号-55x 105012x 106已调信号频谱2.52.50052.501-4-2024添加噪声后信号波形-505x 105051015x 105添加噪声后信号频谱2.52.50052.501-2024带通滤波后信号波形-55x 10500.511.526带通滤波后信号频谱50%% AMµ÷ÖÆ2.5 2.5005 2.501 2.5015 2.502 2.5025 2.503 2.5035-1012相乘信号-5-4-3-2-1012345x 1050510155相乘信号频谱2.52.50012.50022.50032.50042.50052.50062.50072.50082.5009 2.501-0.500.51解调信号-5-4-3-2-1012345x 1050510155解调信号频谱figure('Name','Ðźŵ÷Öƹý³ÌÖв¨Ðμ°ÆäƵÆ×','NumberTitle','off')a0=2;f0=2000;fc=20000;fs=1000000;t=[1:0.000001:4];am1=0*cos(2*pi*f0*t); %µ÷ÖÆÐźÅam=a0+am1;t1=cos(2*pi*fc*t); %Ôز¨s_am=am.*t1;AM1=fft(am1); T1=fft(t1); S_AM=fft(s_am);f=(0:3000000)*fs/3000001-fs/2;subplot(3,2,1); plot(t(1:1000),am1(1:1000)); title('ÐÅÏ¢ÐźŲ¨ÐÎ');subplot(3,2,2); plot(f,fftshift(abs(AM1))); title('ÐÅÏ¢ÐźÅƵÆ×');subplot(3,2,3); plot(t(1:1000),t1(1:1000)); title('Ôز¨ÐźÅ');subplot(3,2,4); plot(f,fftshift(abs(T1))); title('Ôز¨ÐźÅƵÆ×');subplot(3,2,5); plot(t(1:1000),s_am(1:1000)); title('Òѵ÷ÐźÅ');subplot(3,2,6); plot(f,fftshift(abs(S_AM))); title('Òѵ÷ÐźÅƵÆ×');%²úÉúÔëÉùfigure('Name','Ìí¼ÓÔëÉù¼°´øͨÂ˲¨¹ý³Ì²¨Ðμ°ÆäƵÆ×','NumberTitle','off ');snr=5;y=awgn(s_am,snr);fcuts=[16000 17500 22500 24000];mags=[0 1 0];devs=[0.05 0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh,1,1024,fs);st_p=fftfilt(hh,y);Q=fft(st_p);Y=fft(y);f=(0:3000000)*fs/3000001-fs/2;subplot(2,2,1);plot(t(1500001:1501000),y(1500001:1501000));title('Ìí¼ÓÔëÉùºóÐźŲ¨ÐÎ');subplot(2,2,2);plot(f,fftshift(abs(Y)));title('Ìí¼ÓÔëÉùºóÐźÅƵÆ×');subplot(2,2,3);plot(t(1500001:1501000),st_p(1500001:1501000));title('´øͨÂ˲¨ºóÐźŲ¨ÐÎ');subplot(2,2,4); plot(f,fftshift(abs(Q)));title('´øͨÂ˲¨ºóÐźÅƵÆ×');%½âµ÷figure('Name','Ïà¸É½âµ÷ËùµÃ²¨Ðμ°ÆäƵÆ×','NumberTitle','off');ss_am=st_p.*t1;SS_AM=fft(ss_am)f=(0:3000000)*fs/3000001-fs/2;subplot(2,1,1);plot(t(1500001:1503000),ss_am(1500001:1503000));title( 'Ïà³ËÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(SS_AM)));title('Ïà³ËÐźÅƵÆ×'); fcuts1=[2500,30000];mags1=[1 0];devs1=[0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts1,mags1,devs1,fs);hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh1,1,1024,fs);m0=fftfilt(hh1,ss_am);M0=fft(m0);f=(0:3000000)*fs/3000001-fs/2;figuresubplot(2,1,1);plot(t(1500001:1501000),m0(1500001:1501000));title('½âµ÷ÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(M0)));title('½âµ÷ÐźÅƵÆ×');11.0005 1.001-101信息信号波形-505x 1050126信息信号频谱11.0005 1.001-101载波信号-505x 1050126载波信号频谱11.00051.001-505已调信号-55x 105024x 106已调信号频谱2.52.50052.501-505添加噪声后信号波形-505x 1050123x 106添加噪声后信号频谱2.52.50052.501-4-2024带通滤波后信号波形-55x 105012346带通滤波后信号频谱0%% AMµ÷ÖÆ2.5 2.5005 2.501 2.5015 2.502 2.5025 2.503 2.5035-10123相乘信号-5-4-3-2-1012345x 10501236相乘信号频谱2.52.50012.50022.50032.50042.50052.50062.50072.50082.5009 2.50100.511.5解调信号-5-4-3-2-1012345x 10501236解调信号频谱figure('Name','Ðźŵ÷Öƹý³ÌÖв¨Ðμ°ÆäƵÆ×','NumberTitle','off')a0=10^100;f0=2000;fc=20000;fs=1000000;t=[1:0.000001:4];am1=0*cos(2*pi*f0*t); %µ÷ÖÆÐźÅam=a0+am1;t1=cos(2*pi*fc*t); %Ôز¨s_am=am.*t1;AM1=fft(am1); T1=fft(t1); S_AM=fft(s_am);f=(0:3000000)*fs/3000001-fs/2;subplot(3,2,1); plot(t(1:1000),am1(1:1000)); title('ÐÅÏ¢ÐźŲ¨ÐÎ');subplot(3,2,2); plot(f,fftshift(abs(AM1))); title('ÐÅÏ¢ÐźÅƵÆ×');subplot(3,2,3); plot(t(1:1000),t1(1:1000)); title('Ôز¨ÐźÅ');subplot(3,2,4); plot(f,fftshift(abs(T1))); title('Ôز¨ÐźÅƵÆ×');subplot(3,2,5); plot(t(1:1000),s_am(1:1000)); title('Òѵ÷ÐźÅ');subplot(3,2,6); plot(f,fftshift(abs(S_AM))); title('Òѵ÷ÐźÅƵÆ×');%²úÉúÔëÉùfigure('Name','Ìí¼ÓÔëÉù¼°´øͨÂ˲¨¹ý³Ì²¨Ðμ°ÆäƵÆ×','NumberTitle','off ');snr=5;y=awgn(s_am,snr);fcuts=[16000 17500 22500 24000];mags=[0 1 0];devs=[0.05 0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh,1,1024,fs);st_p=fftfilt(hh,y);Q=fft(st_p);Y=fft(y);f=(0:3000000)*fs/3000001-fs/2;subplot(2,2,1);plot(t(1500001:1501000),y(1500001:1501000));title('Ìí¼ÓÔëÉùºóÐźŲ¨ÐÎ');subplot(2,2,2);plot(f,fftshift(abs(Y)));title('Ìí¼ÓÔëÉùºóÐźÅƵÆ×');subplot(2,2,3);plot(t(1500001:1501000),st_p(1500001:1501000));title('´øͨÂ˲¨ºóÐźŲ¨ÐÎ');subplot(2,2,4); plot(f,fftshift(abs(Q)));title('´øͨÂ˲¨ºóÐźÅƵÆ×');%½âµ÷figure('Name','Ïà¸É½âµ÷ËùµÃ²¨Ðμ°ÆäƵÆ×','NumberTitle','off');ss_am=st_p.*t1;SS_AM=fft(ss_am)f=(0:3000000)*fs/3000001-fs/2;subplot(2,1,1);plot(t(1500001:1503000),ss_am(1500001:1503000));title( 'Ïà³ËÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(SS_AM)));title('Ïà³ËÐźÅƵÆ×'); fcuts1=[2500,30000];mags1=[1 0];devs1=[0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts1,mags1,devs1,fs);hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh1,1,1024,fs);m0=fftfilt(hh1,ss_am);M0=fft(m0);f=(0:3000000)*fs/3000001-fs/2;figuresubplot(2,1,1);plot(t(1500001:1501000),m0(1500001:1501000));title('½âµ÷ÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(M0)));title('½âµ÷ÐźÅƵÆ×');11.0005 1.001-101信息信号波形-505x 1050126信息信号频谱1 1.0005 1.001-101载波信号-505x 1050126载波信号频谱11.00051.001-101x 10100已调信号-55x 105012x 10106已调信号频谱2.52.5005 2.501-1-0.500.51x 10100添加噪声后信号波形-505x 105051015x 10105添加噪声后信号频谱2.52.5005 2.501-2-1012100带通滤波后信号波形-55x 10501106带通滤波后信号频谱FM 调制与解调%%FMfigure('Name','FMµ÷ÖƲ¨ÐÎÓëƵÆ×')2.5 2.5005 2.501 2.5015 2.502 2.5025 2.503 2.5035-50510x 1099相乘信号-5-4-3-2-1012345x 105051015105相乘信号频谱2.52.50012.50022.50032.50042.50052.50062.50072.50082.5009 2.5013.93.913.923.93x 1099解调信号-1-0.500.51x 105123105解调信号频谱f0=2000; fc=20000; fs=1000000; Am=1; kf=0.5; Tc=8; Ta=0.001; dt=0.000001;t=[0:1/fs:3];f=(0:length(t)-1)*fs/(length(t))-fs/2;fm0=cos(2*pi*f0*t);mt=fm0;%»ý·ÖÆ÷Éè¼Æw1=0;w2=0;for m=1:length(t)w1=mt(m)+w2;w2=mt(m)+w1;fi(m)=w1/(2*fs);endfi=fi*2*pi/max(abs(fi));I=cos(kf*fi);Q=sin(kf*fi);y1=Am*cos(2*pi*fc*t).*I-Am*sin(2*pi*fc*t).*Q;subplot(2,1,1);plot(t,y1);title('²¨ÐÎ')axis([1e-3 4e-3 -2 2]);Y1=fft(y1);subplot(2,1,2);plot(f,fftshift(abs(Y1))/1e6); title('ƵÆ×') %%Ôز¨ÆµÆ×axis([-4e4 4e4 0 1]);figure('Name','FMµ÷Öƺó¼ÓÔëÉù²¨ÐÎÓë½âµ÷ºó²¨ÐÎÒÔ¼°Â˳ýÖ±Á÷·ÖÁ¿ºóµÄ²¨ÐÎ')y1o=awgn(y1,40);subplot(3,1,1);plot(t,y1o); title('¼ÓÔëÉùºó²¨ÐÎ') %%¼ÓÔëÉùºóµÄÐźÅaxis([1e-3 4e-3 -2 2]);%%´øͨÂ˲¨KSband=2*(3+1)*f0;fcutsb=[fc-KSband-2000 fc-KSband fc+KSbandfc+KSband+2000]; %%½ÓÊÕ»úÇ°¶Ë´øͨÂ˲¨magsb=[0 1 0];devsb=[0.05 0.01 0.05];[nb,Wnb,betab,ftypeb]=kaiserord(fcutsb,magsb,devsb,fs);hhb=fir1(nb,Wnb,ftypeb,kaiser(nb+1,betab),'noscale'); %´øͨÂ˲¨Æ÷£»st_pb=fftfilt(hhb,y1o);subplot(3,1,2);st_pb=st_pb/1e6;plot(t,st_pb); title('´øͨÂ˲¨Æ÷ºóµÄ²¨ÐÎ')axis([1e-3 4e-3 -2e-6 2e-6]);%΢·ÖÆ÷Éè¼Æfor i=1:length(t)-1 %½ÓÊÕÐźÅͨ¹ý΢·ÖÆ÷´¦Àídiff_st_pb(i)=(st_pb(i+1)-st_pb(i))/dt;endsfm=abs(hilbert(diff_st_pb));subplot(3,1,2);plot(t,[sfm*20 0]);axis([1e-3 4e-3 0 4]);%%¸ôÖ±% KSbandh=2*(3+1)*f0;fcutsh=[0.01 3000];magsh=[0 1];devsh=[0.01 0.05];[nh,Wnh,betah,ftypeh]=kaiserord(fcutsh,magsh,devsh,fs);hhh=fir1(nh,Wnh,ftypeh,kaiser(nh+1,betah),'noscale');sfm_out=fftfilt(hhh,sfm*20);subplot(3,1,3);plot(t,[sfm_out 0]);title('¸ôÖ±ºóµÄ²¨ÐÎ')axis([1e-3 4e-3 -2 2]);11.522.533.54x 10-3-2-1012波形-4-3-2-101234x 10400.51频谱11.522.533.54x 10-3-202加噪声后波形11.522.53 3.54x 10-302411.522.533.54x 10-3-202隔直后的波形。
gnuradio的basic block开发实例
gnuradio的basic block开发实例GNU Radio是一个开源的无线电通信框架,它允许你使用图形化的接口设计复杂的无线电系统。
基本块(basic block)是GNU Radio中用于构建流图的基本单元。
下面是一个简单的GNU Radio基本块开发实例,该实例是一个简单的振幅调制器。
首先,你需要安装GNU Radio和必要的工具包。
你可以在GNU Radio的官方网站上找到安装指南。
一旦你安装了GNU Radio,你可以使用以下代码创建一个简单的振幅调制器。
这个基本块将输入的复数信号作为I/Q数据,并将它们调制到一个给定的频率。
```pythonfrom gnuradio import grimport mathclass am_modulator(_block):def __init__(self, sample_rate, freq):_block.__init__(self, "am_modulator", _signature(1, 1,_gr_complex), _signature(1, 1, _float))_rate = sample_rate= freq= 0= (2)/_rate_port_register_in(_PY_PORT_NAME)_port_register_out(_PY_PORT_NAME)= _to_short(2)= _to_float()= _to_short(2)((self, 0), (, 0))((, 0), (, 0))((, 0), (, 0))((self, 1), (, 1))((, 1), (, 1))((, 1), (self, 0))def forecast(self, noutput_items, ninput_items_required):setup size of input queue based on history and other factors passdef general_work(self, input_items, output_items):in0 = input_items[0] input complex streamout = output_items[0] output float streamout[:] = in0 (1j) modulation with carrier wavefor i in range(len(in0)): update phase for next iteration+=if > 2: -= 2if < -2: += 2return len(output_items[0]) number of output items produced```这个基本块将输入的复数信号与一个指数相位进行相乘,从而实现振幅调制。
基于gnuradio平台的ofdm通信体制基带信号的设计毕业设计论文[管理资料]
摘要随着社会节奏的加快和人们对高速率数据传输业务的需求,目前的2G 移动通信网络逐渐变得越来越吃力。
随着3G移动通信技术摘下神秘的面纱,我们似乎看到了一线曙光,但它也不是我们的最终归属。
只有以软件无线电为基础的4G移动通信,才能真正的带我们走出了窄带数字移动通信的范畴,迎接一个更加光明的移动通信时代。
论文主要介绍了软件无线电的关键技术之一OFDM调制技术的基本原理,其中包括OFDM的数字调制映射,IFFT实现,以及引入循环前缀以消除ISI和ICI。
随后介绍了开源项目GNU Radio,并以此为平台进行OFDM 通信体制基带信号的设计。
本论文的重点在于对OFDM(正交频分复用技术)调制技术的理解,并依托现有的GNU Radio和USRP(通用软件无线电外设)所组成的软件无线电平台,根据要求设计各种参数,并在Linux下实现OFDM基带信号的设计。
通过OFDM调制信号频谱的测定,对OFDM调制技术予以验证。
关键词软件无线电,正交频分复用,开源软件无线电,通用软件无线电外设AbstractWith the quickening pace of society and people's need for high-speed data transmission, the current 2G mobile communication network has gradually become more and more difficulty to satisfy us. With the 3G mobile communication technology taking off its veil of mystery, we seem to see a ray of hope, but it is not our ultimate home. Only a software radio-based 4G mobile communication, can really take us out of the narrow-band digital mobile communication areas, which will bring us a brighter era of mobile communications.This paper firstly introduces OFDM(Orthogonal Frequency Division Multiplexing), one of the key technologies of Software Defined Radio, which includes digital modulation mapping, realization of IFFT and mechanism that throws light on eliminate the ISI and ICI by bringing in circulation prefix. Then open-source projects GNU Radio have been introduced, and, what we need to do is to design OFDM communication system baseband signal on GNU Radio platform.This paper focuses on the understanding of OFDM modulation technology, and with the help of software Radio platform compose of GNU Radio and USRP (Universal Software Radio Peripheral), according to the requirements given, we can determine the parameters and realize the design of OFDM baseband signal. By analyzing modulating signal spectrum of the OFDM, the OFDM modulation technology shall be verified.Key words SDR OFDM GNU Radio USRP目录摘要 .......................................................................................................................... Abstract .. (I)第1章绪论 (4)课题背景 (4)课题来源、目的和意义 (5)主要研究内容 (5)本文结构 (6)第2章OFDM调制技术原理 (7)引言 (7)OFDM技术基础 (7)OFDM调制技术的核心思想 (8)串/并变换 (9)子载波调制 (9)IFFT/FFT实现 (13)保护间隔和循环前缀 (14)傅里叶变换的过采样 (16)加窗技术 (16)RF调制 (18)本章小结 (19)第3章软件无线电平台介绍 (20)软件无线电平台 (20)GNU Radio (21)GNU Radio产生 (21)GNU Radio的工作机制 (21)USRP硬件平台 (23)Python脚本语言简介 (24)本章小结 (24)第4章OFDM基带信号的设计 (26)OFDM基本参数选择 (26)OFDM若干环节详解 (27)编码 (27)交织 (28)子载波调制与解调 (29)导频的插入 (29)循环前缀的引入 (31)Python应用程序的设计 (31)Python应用程序详解 (32)程序细节详解 (33)主要运行参数及意义 (33)运行结果和分析 (34)本章小结 (35)结论 (36)致谢 (37)参考文献 (38)第1章绪论本章主要介绍了毕业设计的课题背景以及课题来源,然后介绍了一下主要研究内容与文章内容安排。
AM基于matlab信号调制解调课程设计
专业课程设计报告题目:调幅(AM)信号的调制传输解调系别信息工程系专业班级通信082班学生姓名李慧明指导教师罗浩提交日期 2011年11月 25日 ____目录一、设计目的 (1)二、设计要求和设计指标 (1)三、设计内容 (1)3.1 设计步骤 (1)3.2仿真结果与分析 (3)3.3工作原理 (3)四、本设计改进建议 (3)五、总结(感想和心得等) (4)六、主要参考文献 (4)一、设计目的1.本课程设计课题主要研究模拟系统AM调制与解调的设计和实现方法。
2.通过完成本课题的设计,拟主要达到以下几个目的:掌握模拟系统AM调制与解调的原理及实现方法。
3.掌握模拟系统AM调制与解调的设计方法;4.掌握熟悉MATLAB应用,进一步锻炼应用Matlab进行编程仿真的能力;5.熟悉基于Simulink的动态建模和仿真的步骤和过程;二、设计要求和设计指标(1)根据设计指导书给定的系统性能指标参数及具体要求,初步确定实现AM调制及解调,设计并画出电路原理图。
(2)根据设计的系统框图,给出具体的参数,进行基于Simulink的动态仿真设计。
实现AM调制及解调的系统动态仿真设计,要求包括调制和解调的部分,并给出系统的基于Simulink的动态建模和仿真的系统方框图,同时记录系统的各个输出点的波形和频谱图。
具体参数自定。
三、设计内容3.1 设计步骤首先打开simulink模块库窗口,在simulink模块库窗口中单击菜单项“File/New/Model”,即可以建立一个新的simulink模型文件。
如图2-1所示。
利用鼠标单击Simulink模块库窗口中的子库,选取函数模块中所需要的模型模块,将它拖动到新建模型文件窗口的合适的位置。
然后对“sine wave”模型模块进行参数设置和修改,双击修改传递函数参数,在弹出对话框中对“DSB AMDemodulatorPassband”模型模块中参数sample time系数改为“0.005”,“ AWGNChannel”中参数mode改为variance from mask。
基于GNURADIO的无线电信号监测模块开发
作
任
务
及
要
求
1.了解如何使用Libboost C++库编写跨平台C++程序;
2.理解如何编写GnuRadio信号处理模块;
3.了解如何编写Python程序;
4.开发一个GnuRadio无线电信号检测模块,能够使用Python语言调用这个模块。
5.查找相关文献
6.论文写作
以上内容由指导教师填写
学院
审核
年月日
本科毕业论文(设计)任务书
题目
基于GNURADIO的无线电信号监测模块开发
题目Leabharlann 来源□科研项目□生产实践■自选题目□其他
题目
类型
□理论研究□科学实验
■设计开发□其他
选
题
背
景
及
目
的
开源软件无线电GNU Radio是免费的软件开发工具套件。它提供信号运行和处理模块,用它可以在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。这个套件广泛用于业余爱好者,学术机构和商业机构用来研究和构建无线通信系统。
本课题的目标是根据GnuRadio的规范,编写一个C++信号能量检测模块,插入到GnuRadio系统中,能够使用Python语言调用这个模块执行无线电信号参数检测功能。信号参数包括:频点、带宽、电平等。
课题涉及的技术:
1)GnuRadio框架;2)Libboost C++编程接口;3)Python编程;
基于matlab的am信号的调制与解调
目录第一章绪论.....................................................................................................................................1 1.1 背景以及意义..................................................................................................................1 1.2 发展前景 (1)第二章AM 信号的原理以及特点.................................................................................................4 2.1 噪声模型 (4)2.1.1 噪声的分类 (4)2.1.2 本文噪声模型 (4)2.2 通用调制模型 (5)2.3.1 AM 信号数字模型以及特点 (6)8 AM 信号的非相干解调 (8)3.4 抗噪声性能的分析模型 (9)3.5 相干解调的抗噪声性能............................................................................................. . 9 3.6 非相干解调的抗噪声性能.. (11)3.6.1 大信噪比的情况 (11)3.6.2 小信噪比情况 (12)第四章仿真结果及结论 (13)参考文献(References) (18)致谢 (19)附录 (20)基于MATLAB 的AM 信号的调制与解调摘要: 摘要:现在的社会越来越发达,科学技术不断的在更新,在信号模拟电路里面经常要用到调制与解调,而AM 的调制与解调是最基本的,也是经常用到的.用AM 调制与解调可以在电路里面实现很多功能, 制造出很多有用又实惠的电子产品, 为我们的生活带来便利. 在我们日常生活中用的收音机也是采用了AM 调制方式,而且在军事民用领域都有十分重要的研究课题.本文主要的研究内容是了解AM 信号的数学模型及调制方式以及其方法.不同的解调方法在不同的信噪比情况下的解调结果,那种方法更好,作出比较.要求是进行双音及以上的AM 信号的调制与解调.先从AM 的调制研究,研究它的功能及在现实生活中的运用.其次研究AM 的解调,以及一些有关的知识点,以及通过它在通信方面的运用更加深入的了解它.从单音AM 信号的数学模型及调制解调方式出发,得出双音AM 信号的数学模型及其调制与框图调制解调波形.利用MATLAB 编程语言实现对双音AM 信号的调制与解调,给出不同信噪比情况下的解调结果对比. 关键词:AM 信号,调制,解调,信噪比,MA TLAB 关键词第二章AM 信号的原理以及特点2.2 通用调制模型从理论上来说,各种信号都可以用正交调制的方法来实现,其时域形式都可以表示为: s (t ) = I (t ) cos(ω0t ) + Q(t ) sin(ω0t ) 若调制信号在数字域上实现时要对式(2.2.1)进行数字化: (2.2.1) nω nω s (n) = I (n) cos 0 + Q(n) sin 0 ωs ωs (2.2.2) 从式(2.2.1)和式(2.2.2)可以看出, 调制信号的信息都应该包括在I (t ) 和Q (t ) 内. 2.2.1 图给出了调制信号的正交调制框图. 本文规定所有调制信号所调制时所用载波的初始相位均为0, 在后面的分析中不再另作说明. cos(ω0t ) 信源I 多相滤波相乘相加信源Q 多相滤波相乘sin(ω0t ) 图2.2.1 调制信号正交调制框图5 2.3 AM 信号的调制原理2.3.1 AM 信号数字模型以及特点AM 是指调制信号去控制高频载波的幅度,使其随调制信号呈线性变化的过程.AM 信号的调制原理模型如下[6]: 图 2.3.1 AM 信号的调制原理模型M(t)为基带信号,它可以是确知信号,也可以是随机信号,但通常认为它的平均值为0. 载波为 C ( t ) = A0 cos( w C t + ¢0 ) 上式中, A0 为载波振幅, Wc 为载波角频率0 为载波的初始相位. 2.3.2 AM 信号的波形和频谱特性(2.3.1) 虽然实际模拟基带信号m(t)是随机的,但我们还是从简单入手, 先考虑m(t)是确知信号的傅氏频谱,然后在分析m(t)是随机信号时调幅信号的功率谱密度. 可知[7] S AM = [ A0 + m( t )]cosw c t = A0 cosw c t + m( t )cosw c t 设m(t)的频谱为M(w) ,由傅氏变换的理论可得已调信号(2.3.2) 1 S AM ( w ) = лA 0 [δ(w - w c ) + δ(w + w c )] + [ M (w - w c ) + M (w + w c )] 2 AM 的波形和相应的频谱图如下(2.3.3) 6 图2.3.2 AM 信号的时域波形及其频谱可以看出,第一:AM 的频谱与基带信号的频谱呈线性关系,只是将基带信号的频谱搬移,并没有产生新的频谱成分,因此AM 调制属于线性调制;第二:AM 信号波形的包络与基带信号成正比,所以AM 信号的解调即可以采用相干解调,也可以采用非相干解调(包络检波) .第三:AM 的频谱中含有载频和上,下两个边带,无论是上边带还是下边带,都含有原调制信号的完整信息,股已调波形的带宽为原基带信号带宽的两倍,即BAM = 2 f 其中f H 为调制信号的最高频率. H (2.3.4) 7第三章AM 信号的解调原理以及特点3.1 AM 信号的解调原理及方式解调是将位于载波的信号频谱再搬回来,并且不失真的恢复出原始基带信号. 解调的方式有两种[6]:相干解调与非相干解调.相干解调适用于各种线性调制系统,非相干解调一般适用幅度调制(AM)信号.3.2 AM 信号的相干解调所谓相干解调是为了从接受的已调信号中, 不失真地恢复原调制信号, 要求本地载波和接收信号的载波保证同频同相.相干载波的一般模型如下: 图 3.2.1 AM 信号的相干解调原理框图将已调信号乘上一个与调制器同频同相的载波,得S AM ( t) cosw c t = [ A0 + m(t )] cos 2 wc t 1 1 = [ A0 + m(t )] + [ A0 + m(t )] cos 2 wc t 2 2 原始的调制信号(3.2.1) 由上式可知,只要用一个低通滤波器,就可以将第1项与第2项分离,无失真的恢复出1 M 0 (T ) = [ A0 + M (T )] 2 不到满足,则会破坏原始信号的恢复.3.3 AM 信号的非相干解调(3.2.2) 相干关键是必须产生一个与调制器同频同相位的载波. 如果同频同相位的条件得所谓非相干解调是在接收端解调信号时不需要本地载波, 而是利用已调信号中的包络信号来恢复原基带信号[7].因此,非相干解调一般只适用幅度调制(AM)系统.忧郁包络解调器电路简单,效率高,所以几乎所有的幅度调制(AM)接收机都采用这种电路.如下为串联型包络检波器的具体电路. 图 3.3.1 AM 信号的非相干解调原理8 当RC 满足条件1 w c ≤ RC ≤ 1 w h 时,包络检波器的输出基本与输入信号的包络变化呈线性关系,即m(t) A0 + m(t) = o 其中, A0 ≥ m(t) .隔去直流后就得到原信号m(t ) max3.4 抗噪声性能的分析模型(3.3.1) 各种线性已调信号在传输过程中不可避免地要受到噪声的干扰, 为了讨论问题的简单起见,我们这里只研究加性噪声对信号的影响.因此,接收端收到的信号是发送信号与加性噪声之[8]. 由于加性噪声只对已调信号的接收产生影响, 因而调制系统的抗噪声性能主要用解调器的抗噪声性能来衡量. 为了对不同调制方式下各种解调器性能进行度量, 通常采用信噪比增益G(又称调制制度增益)来表示解调器的抗噪声性能,即[9] G= 输出信噪比S 0 N 0 = 输入信噪比S i N i (3.4.1) 有加性噪声时解调器的数学模型如图图3.4.1 AM 信号的解调原理图图中S m (t ) 为已调信号,n(t)为加性高斯白噪声. S m (t ) n(t)首先经过一带通滤波器, 滤出有用信号,滤除带外的噪声.经过带通滤波器后到达解调器输入端的信号为S m (t ) ,噪声为高斯窄带噪声n i (t ) ,显然解调器输入端的噪声带宽与已调信号的带宽是相同的.最后经解调器解调输出的有用信号为m 0 (t ) ,噪声为n0 (t ) ..5 相干抗噪声性能各种线性调制系统的相干解调模型如下图所示. 9 图3.5.1 线性调制系统的相干解调模型图中S m (t ) 可以是各种调幅信号,如AM,DSB,SSB VSB,带通滤波器的带宽等于已调信号带宽[10].下面讨论各种线性调制系统的抗噪声性能[11]. AM 信号的时域表达式为S AM ( t ) = [ A0 + m( t )]cosw c t 通过分析可得AM 信号的平均功率为(3.5.1) ( S i ) AM = A02 m 2 ( t ) + 2 2 (3.5.2) 又已知输入功率N i = n 0 B , 其中B 表示已调信号的带宽. 由此可得AM 信号在解调器的输入信噪比为( S i N i ) AM = AM 信号经相干解调器的输出信号为2 A02 + m 2 ( t ) A0 + m 2 ( t ) = 2n 0 B AM 4n 0 f H (3.5.3) m 0 (t) = 因此解调后输出信号功率为1 m( t ) 2 1 2 m (t ) 4 (3.5.4) 2 ( S 0 ) AM = m 0 ( t ) = (3.5.5) 在上图中输入噪声通过带通滤波器之后,变成窄带噪声n i ( t ) ,经乘法器相乘后的输出噪声为n p (t) = n i (t)cosw c t = [n c (t)cosw c t-n s (t)sinw c t]cosw c t = 经LPF 后, 1 1 n c (t) + [nc (t)cos2w c t-n s (t)sin2w c t] 2 2 1 n c (t ) 2 (3.5.6) n 0 (t) = 因此解调器的输出噪声功率为(3.5.7) 10 2 N 0 = n 0 (t) = 1 2 1 n c (t ) = N i 4 4 m 2 (t) m 2 (t ) = n0B 2n 0 f H (3.5.8) 可得AM 信号经过解调器后的输出信噪比为( S 0 N 0 ) AM = (3.5.9) 由上面分析的解调器的输入,输出信噪比可得AM 信号的信噪比增益为G AM =3.6 非相干抗噪声性能S0 N 0 2m 2 ( t ) = Si N i A02 + m 2 ( t ) (3.5.10) 只有AM 信号可以采用非相干解调[12].实际中,AM 信号常采用包络检波器解调,有噪声时包络检波器的数字模型如下: 图 3.6.1 有噪声时包络检波器的数字模型设包络检波器输入信号S m ( t ) 为S m ( t ) = [ A0 + m( t )]cosw c t ,其中A0 ≥ m( t ) max 输入噪声n i ( t ) 为(3.6.1) ni ( t ) = n c ( t )cosw c t - n s ( t )sinw c t 显然,解调器输入信噪功率(3.6.2) A02 m 2 ( t ) Si = +2 2 噪声功率(3.6.3) N i = n i2 ( t ) = n 0 B 3.6.1 大信噪比的情况(3.6.4) 所谓大信噪比是指输入信号幅度远大于噪声幅度[13].即满足条件A0 + m(t) n i (t) 由此可知,包络检波器输出的有用信号是m(t) ,输出噪声是n c (t) ,信号与噪声是分开的. 直流成分A0 可被低通滤波器滤除.故输出的平均信号功率及平均噪声功率分别为11 S0 = m 2 (t) 2 N 0 = n c ( t ) = n i2 ( t ) = n 0 B (3.6.5) 于是,可以得到G AM S0 N 0 2m 2 ( t ) = = Si N i A02 + m 2 ( t ) (3.6.7) 此结果与相干解调时得到的噪声增益一致.可见在大噪声比情况下,AM 信号包络检波器的性能几乎与相干解调性能相同. 3.6.2 小信噪比情况所谓小信噪比是指噪声幅度远大于信号幅度.在此情况下,包络检波器会把有用信号扰乱成噪声,即有用信号"淹没"在噪声中,这种现象通常称为门限效应.进一步说,所谓门限效应, 就是当包络检波器的输入信噪比降低到一个特定的数值后, 检波器输出信噪比出现急剧恶化的一种现象[14-16]. 小信噪比输入时,包络检波器输出信噪比计算很复杂,而且详细计算它一般也无必要. 12。
基于MATLAB的AM信号的调制与解调
基于MATLAB的AM信号的调制与解调(陕西理工学院物理与电信工程学院通信工程专业1203班,陕西汉中723003)指导教师:井敏英[摘要]:本文主要的研究内容是了解AM信号的数学模型及调制方式以及其解调的方法。
不同的解调方法在不同的信噪比情况下的解调结果,那种方法更好,作出比较。
进行AM信号的调制与解调。
先从AM的调制研究,研究它的功能及在现实生活中的运用。
其次研究AM的解调,以及一些有关的知识点,以及通过它在通信方面的运用更加深入的了解它。
从AM信号的数学模型及调制解调方式出发,得出AM调制与解调的框图和调制解调波形。
利用MA TLAB编程语言实现对AM 信号的调制与解调,给出不同信噪比情况下的解调结果对比。
[关键词]:AM信号;调制;解调;信噪比MATLAB.Modulation and demodulation of AM signalbased on MATLAB(Grade 2012,Class 3,Major of Communication Engineering,School of Physics and Telecommunication Engineering of Shaanxi University of Technology,Hanzhong 723000,Shaanxi)Tutor: Jing Mingying[Abstract]: The main content of this paper is to understand the mathematical model of the AM signal and the modulation and the demodulation method. Demodulation different methods in different circumstances of the demodulation signal to noise ratio the results of methods that better, to make the comparison. Requirement is more than double the sound and the AM signal modulation and demodulation. AM modulation first study of its function and in real life use. AM demodulation followed by research, as well as some related knowledge, as well as through its use of communications more in-depth understanding of it. AM signal from the tone of the mathematical model and the modulation and demodulation methods,the two-tone AM signal to draw a mathematical model and the block diagram of modulation and demodulation and modulation and demodulation waveforms. MATLAB programming language to use to achieve the two-tone AM signal modulation and demodulation, given the different circumstances of the demodulation signal to noise ratio compared the results.[Keywords]: AM signal, Modulation, Demodulation, Noise ratio signal, MATLAB目录1.绪论背景以及意义现在的社会越来越发达,科学技术不断的在更新,在信号和模拟通信的中心问题是要把载有消息的信号经系统加工处理后,送入信道进行传送,从而实现消息的相互传递。
基于MATLAB的AM调制及解调系统仿真解析
基于MATLAB的AM调制及解调系统仿真摘要:振幅调制、解调电路是信号在发射机和接收机之间进行传送时的信号处理电路。
标准振幅调制与解调电路实际上是完成信号频谱的线性搬移,以便于信号的传送。
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,具有强大的软件仿真建模能力,可通过MATLAB建立完整的AM调制、解调系统的仿真模型,描绘出信号在调制与解调过程的波形变化,探究调制解调的影响因素,以便于更好的了解AM调制与解调的过程。
关键词:MATLAB AM 调制解调Abstract:the amplitude modulation and demodulation circuit is the signals between the transmitter and receiver of the signal processing circuit. Standard of amplitude modulation and demodulation circuit is actually the complete spectrum of linear move, so that the transfer of a signal. MATLAB is a kind of for algorithm development, data visualization, data analysis and numerical calculation of senior technical computing language and interactive environment, is a powerful software simulation modeling ability, can build complete AM modulation and demodulation system by MATLAB, a simulation model of describing the waveform of the signal in the modulation and demodulation process changes, to explore the influencing factors of modem, so as to better understand the AM modulation and demodulation process.Keywords:MATLAB AM modulation demodulation1.引言在无线电技术中,调制与解调占有十分重要的地位。
[信息与通信]基于MATLAB仿真MQAM调制与解调的设计
目录摘要 (I)ABSTRACT (II)第1章前言 (1)1.1QAM的引入 (1)1.2调制与解调 (1)1.3QAM的背景 (3)1.4QAM的应用 (5)1.5研究内容 (7)第2章正交振幅调制解调原理 (8)2.1正交振幅调制技术简介 (8)2.2QAM调制解调原理 (10)2.2.1 QAM调制 (10)2.2.2 QAM的解调和判决 (11)2.3QAM的误码率性能 (12)2.3.1 误码率讨论 (12)2.3.2 误码率Pe的两种表示方式 (14)2.4MQAM(多电平正交调制)调制解调原理 (15)2.4.1 调制原理 (16)2.4.2 QAM信号的信号空间图 (17)2.4.3 MQAM(多电平正交振幅调制)信号的解调原理 (19)2.5具有矩形星座图信号的调制与解调 (20)2.5.1 具有矩形星座图的信号调制 (20)2.5.2 具有矩形星座图的信号解调 (21)2.6具有十字形星座图的信号的调制与解调 (22)2.6.1具有十字形星座图的信号调制 (22)2..6.2具有十字形星座图的信号解调 (22)2.7结语 (23)第3章正交振幅调制解调眼图分析 (25)第4章伪随机序列 (28)第5章MATLAB软件对QAM的仿真过程 (31)5.1MATLAB仿真软件的简介 (31)5.2 MATLAB环境下16QAM调制及解调仿真程序说明 (32)第6章结论与展望 (35)6.1本文的重要贡献 (35)6.2QAM的优点 (35)6.3未来展望 (36)致谢 (37)参考文献 (38)毕业设计小结 (39)附录 (40)摘要随着无线通信频带日趋紧张,研究和设计自适应信道调制技术体制是建立宽带移动通信网络的关键技术之一。
正交振幅调制技术(QAM)是一种功率和带宽相对高效的信道调制技术,因此在大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛使用。
基于GNU Radio架构的信号处理实验平台开发
基于GNU Radio架构的信号处理实验平台开发张建良;吴越;齐冬莲【摘要】开发了基于GNU Radio的信号分析与处理实验平台.借助GNU Radio 完全开源的信号分析处理平台,既能够提供开放式可修改的模块库,以便快速建立关于信号处理的流程并进行内容设计、仿真,又能够用来连接真实的信号接收和处理系统,方便进行综合性和探究性实验设计.该实验平台的建立,方便学生以更加灵活的学习形式获取专业的资源,进行更加灵活多样的学习和互动,并有助于提高实验教学效果.%The signal analysis and processing experimental platform based on GNU Radio is developed.By using the fully open source GNU Radio based signal analysis and processing platform,an open and modifiable library of modules can be provided so as to establish the quick signal processing flow and carry out the content design and simulation.At the same time,the platform can be used to connect the real signal receiving and processing system,which is easy to carry out the comprehensive and exploratory experimental design.The establishment of the experimental platform can help the students to obtain the specialized resources in a more flexible learning method and carry out more flexible and interactive learning,and the platform can also contribute to the improvement of the experimental teaching effect.【期刊名称】《实验技术与管理》【年(卷),期】2016(033)011【总页数】4页(P161-164)【关键词】信号分析与处理;实验平台;GNURadio;实验教学改革【作者】张建良;吴越;齐冬莲【作者单位】浙江大学电气工程学院,浙江杭州 310027;浙江大学电气工程学院,浙江杭州 310027;浙江大学电气工程学院,浙江杭州 310027【正文语种】中文【中图分类】G642.0传统信号实验大多基于硬件电路完成,实验手段单一,很多复杂的实验难以实现,因而在一定程度上影响了学生对“信号分析与处理”课程基本内容的理解和掌握[1-4]。
基于matlab的am信号的调制与解调
通信专业课程设计一(论文)太原科技大学课程设计(论文)设计(论文)题目:基于MATLAB的AM信号的调制与解调姓名张壮阔学号 200822080132班级通信082201H学院华科学院指导教师郑秀萍2011年12 月23 日太原科技大学课程设计(论文)任务书学院(直属系):华科学院电子信息工程系时间:2011年12月9日学生姓名张壮阔指导教师郑秀萍设计(论文)题目基于MATLAB的AM信号的调制与解调主要研究内容1.通过满调幅情况下的,欠调幅情况下的以及过调幅情况下的已调的AM信号波形,研究双音信号的调制。
2.通过信噪比为-5dB时的过调幅情况下,满调幅情况下的AM 信号在信噪比为-5dB,0dB和5dB情况下的相干解调波形,研究双音信号的解调。
研究方法基于MATLAB的波形模拟系统,模拟需要的各种情况下的波形情况。
主要技术指标(或研究目标) 1、基于MATLAB的波形模拟系统的建立;2、AM信号的调制与解调。
教研室意见教研室(负责人)签字:年月日目录通信专业课程设计一(论文) (1)太原科技大学课程设计(论文)任务书 (2)第1章绪论.................................................................................................................................................... - 2 -1.1 AM信号调制解调的背景、意义和发展前景.............................................................................. - 2 -1.2 本文研究的主要内容..................................................................................................................... - 2 -第2章AM信号调制解调的原理以及特点 .................................................................................................... - 4 -2.1 噪声模型......................................................................................................................................... - 4 -2.1.1噪声的分类........................................................................................................................... - 4 -2.1.2本文噪声模型....................................................................................................................... - 4 -2.2 通用调制模型................................................................................................................................. - 5 -2.3 AM信号的调制原理...................................................................................................................... - 6 -2.4 AM信号的解调原理及方式.......................................................................................................... - 6 -2.5 抗噪声性能的分析模型................................................................................................................. - 6 -2.6 相干解调的抗噪声性能.............................................................................................................. - 7 -第3章基于双音信号的AM调制与解调的仿真及结论 .............................................................................. - 9 -3.1 设定的双音信号............................................................................................................................. - 9 -3.2基于双音信号的AM调解与解调的仿真结果......................................................................... - 9 -参考文献........................................................................................................................................................ - 14 -附录.............................................................................................................................................................. - 17 -基于MATLAB的AM信号的调制与解调第1章绪论1.1 AM信号调制解调的背景、意义和发展前景现在的社会越来越发达,科学技术不断的在更新,在信号和模拟通信的中心问题是要把载有消息的信号经系统加工处理后,送入信道进行传送,从而实现消息的相互传递。
am fm调制信号表达式算法c语言实现
am fm调制信号表达式算法c语言实现在C语言中实现AM/FM调制信号表达式算法可以分为以下几个步骤:第一步:导入所需的头文件和定义常量首先,我们需要导入所需的头文件,如stdio.h、math.h等等。
同时,我们需要定义一些常量,比如采样频率Fs、载波频率Fc、幅度调制系数M和频率调制系数β等等。
第二步:生成原始信号在AM/FM调制中,原始信号是指待调制的音频信号。
我们可以使用C语言的数组来存储原始信号的采样值。
根据音频信号的特点,我们可以使用正弦函数或者读取音频文件的方式来生成原始信号。
第三步:生成调制信号根据AM/FM调制信号表达式,我们需要根据原始信号和调制参数来生成调制信号。
具体地,对于AM调制,我们可以将原始信号与正弦载波信号相乘,计算得到调制信号。
而对于FM调制,我们可以将原始信号的相位进行调制,得到调制信号。
第四步:计算调制信号的功率谱密度通过对调制信号进行傅里叶变换,我们可以计算调制信号的功率谱密度。
在C 语言中,我们可以使用FFT算法来进行快速傅里叶变换,并得到调制信号的频谱。
第五步:绘制调制信号的频谱图利用绘图库,如matplotlib等,我们可以将调制信号的频谱以图形的形式展示出来。
通过频谱图,我们可以清楚地观察到信号在不同频率上的分布情况,以及调制对信号频谱的影响。
第六步:接收并解调调制信号对于AM/FM调制信号的解调,我们可以使用相应的解调算法,如包络检测法来解调AM信号,使用频率鉴别器等算法来解调FM信号。
在C语言中,我们可以根据解调算法的原理编写相应的解调函数,并将解调后的信号保存到数组中。
第七步:播放解调后的音频信号最后,我们可以使用C语言中的音频播放库,如ALSA、OpenAL等,将解调后的音频信号播放出来。
通过音频播放,我们可以听到解调后的音频效果,验证我们的调制信号表达式算法在C语言中的实现是否正确。
综上所述,通过以上七个步骤,我们可以在C语言中实现AM/FM调制信号表达式算法。
基于matlab的 AM,FM调制与解调报告
AM调制与解调100%% AMµ÷ÖÆfigure('Name','Ðźŵ÷Öƹý³ÌÖв¨Ðμ°ÆäƵÆ×','NumberTitle','off')a0=1;f0=2000;fc=20000;fs=1000000;t=[1:0.000001:4];am1=0*cos(2*pi*f0*t); %µ÷ÖÆÐźÅam=a0+am1;t1=cos(2*pi*fc*t); %Ôز¨s_am=am.*t1;AM1=fft(am1); T1=fft(t1); S_AM=fft(s_am);f=(0:3000000)*fs/3000001-fs/2;subplot(3,2,1); plot(t(1:1000),am1(1:1000)); title('ÐÅÏ¢ÐźŲ¨ÐÎ');subplot(3,2,2); plot(f,fftshift(abs(AM1))); title('ÐÅÏ¢ÐźÅƵÆ×');subplot(3,2,3); plot(t(1:1000),t1(1:1000)); title('Ôز¨ÐźÅ');subplot(3,2,4); plot(f,fftshift(abs(T1))); title('Ôز¨ÐźÅƵÆ×');subplot(3,2,5); plot(t(1:1000),s_am(1:1000)); title('Òѵ÷ÐźÅ');subplot(3,2,6); plot(f,fftshift(abs(S_AM))); title('Òѵ÷ÐźÅƵÆ×');%²úÉúÔëÉùfigure('Name','Ìí¼ÓÔëÉù¼°´øͨÂ˲¨¹ý³Ì²¨Ðμ°ÆäƵÆ×','NumberTitle','off ');snr=5;y=awgn(s_am,snr);fcuts=[16000 17500 22500 24000];mags=[0 1 0];devs=[0.05 0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh,1,1024,fs);st_p=fftfilt(hh,y);Q=fft(st_p);Y=fft(y);f=(0:3000000)*fs/3000001-fs/2;subplot(2,2,1);plot(t(1500001:1501000),y(1500001:1501000));title('Ìí¼ÓÔëÉùºóÐźŲ¨ÐÎ');subplot(2,2,2);plot(f,fftshift(abs(Y)));title('Ìí¼ÓÔëÉùºóÐźÅƵÆ×');subplot(2,2,3);plot(t(1500001:1501000),st_p(1500001:1501000));title('´øͨÂ˲¨ºóÐźŲ¨ÐÎ');subplot(2,2,4); plot(f,fftshift(abs(Q)));title('´øͨÂ˲¨ºóÐźÅƵÆ×');%½âµ÷figure('Name','Ïà¸É½âµ÷ËùµÃ²¨Ðμ°ÆäƵÆ×','NumberTitle','off');ss_am=st_p.*t1;SS_AM=fft(ss_am)f=(0:3000000)*fs/3000001-fs/2;subplot(2,1,1);plot(t(1500001:1503000),ss_am(1500001:1503000));title( 'Ïà³ËÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(SS_AM)));title('Ïà³ËÐźÅƵÆ×');fcuts1=[2500,30000];mags1=[1 0];devs1=[0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts1,mags1,devs1,fs);hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh1,1,1024,fs);m0=fftfilt(hh1,ss_am);M0=fft(m0);f=(0:3000000)*fs/3000001-fs/2;figuresubplot(2,1,1);plot(t(1500001:1501000),m0(1500001:1501000));title('½âµ÷ÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(M0)));title('½âµ÷ÐźÅƵÆ×');11.0005 1.001-101信息信号波形-505x 105012x 106信息信号频谱11.0005 1.001-101载波信号-505x 105012x 106载波信号频谱11.00051.001-202已调信号-55x 105012x 106已调信号频谱2.52.50052.501-4-2024添加噪声后信号波形-505x 105051015x 105添加噪声后信号频谱2.52.50052.501-2024带通滤波后信号波形-55x 10500.511.526带通滤波后信号频谱50%% AMµ÷ÖÆfigure('Name','Ðźŵ÷Öƹý³ÌÖв¨Ðμ°ÆäƵÆ×','NumberTitle','off')2.5 2.5005 2.501 2.5015 2.502 2.5025 2.503 2.5035-1012相乘信号-5-4-3-2-1012345x 1050510155相乘信号频谱2.52.50012.50022.50032.50042.50052.50062.50072.50082.5009 2.501-0.500.51解调信号-5-4-3-2-1012345x 1050510155解调信号频谱a0=2;f0=2000;fc=20000;fs=1000000;t=[1:0.000001:4];am1=0*cos(2*pi*f0*t); %µ÷ÖÆÐźÅam=a0+am1;t1=cos(2*pi*fc*t); %Ôز¨s_am=am.*t1;AM1=fft(am1); T1=fft(t1); S_AM=fft(s_am);f=(0:3000000)*fs/3000001-fs/2;subplot(3,2,1); plot(t(1:1000),am1(1:1000)); title('ÐÅÏ¢ÐźŲ¨ÐÎ');subplot(3,2,2); plot(f,fftshift(abs(AM1))); title('ÐÅÏ¢ÐźÅƵÆ×');subplot(3,2,3); plot(t(1:1000),t1(1:1000)); title('Ôز¨ÐźÅ');subplot(3,2,4); plot(f,fftshift(abs(T1))); title('Ôز¨ÐźÅƵÆ×');subplot(3,2,5); plot(t(1:1000),s_am(1:1000)); title('Òѵ÷ÐźÅ');subplot(3,2,6); plot(f,fftshift(abs(S_AM))); title('Òѵ÷ÐźÅƵÆ×');%²úÉúÔëÉùfigure('Name','Ìí¼ÓÔëÉù¼°´øͨÂ˲¨¹ý³Ì²¨Ðμ°ÆäƵÆ×','NumberTitle','off ');snr=5;y=awgn(s_am,snr);fcuts=[16000 17500 22500 24000];mags=[0 1 0];devs=[0.05 0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh,1,1024,fs);st_p=fftfilt(hh,y);Q=fft(st_p);Y=fft(y);f=(0:3000000)*fs/3000001-fs/2;subplot(2,2,1);plot(t(1500001:1501000),y(1500001:1501000));title('Ìí¼ÓÔëÉùºóÐźŲ¨ÐÎ');subplot(2,2,2);plot(f,fftshift(abs(Y)));title('Ìí¼ÓÔëÉùºóÐźÅƵÆ×');subplot(2,2,3);plot(t(1500001:1501000),st_p(1500001:1501000));title('´øͨÂ˲¨ºóÐźŲ¨ÐÎ');subplot(2,2,4); plot(f,fftshift(abs(Q)));title('´øͨÂ˲¨ºóÐźÅƵÆ×');%½âµ÷figure('Name','Ïà¸É½âµ÷ËùµÃ²¨Ðμ°ÆäƵÆ×','NumberTitle','off');ss_am=st_p.*t1;SS_AM=fft(ss_am)f=(0:3000000)*fs/3000001-fs/2;subplot(2,1,1);plot(t(1500001:1503000),ss_am(1500001:1503000));title( 'Ïà³ËÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(SS_AM)));title('Ïà³ËÐźÅƵÆ×'); fcuts1=[2500,30000];mags1=[1 0];devs1=[0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts1,mags1,devs1,fs);hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh1,1,1024,fs);m0=fftfilt(hh1,ss_am);M0=fft(m0);f=(0:3000000)*fs/3000001-fs/2;figuresubplot(2,1,1);plot(t(1500001:1501000),m0(1500001:1501000));title('½âµ÷ÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(M0)));title('½âµ÷ÐźÅƵÆ×');11.0005 1.001-101信息信号波形-505x 1050126信息信号频谱11.0005 1.001-101载波信号-505x 1050126载波信号频谱11.00051.001-505已调信号-55x 105024x 106已调信号频谱2.52.50052.501-505添加噪声后信号波形-505x 1050123x 106添加噪声后信号频谱2.52.50052.501-4-2024带通滤波后信号波形-55x 105012346带通滤波后信号频谱2.5 2.5005 2.501 2.5015 2.502 2.5025 2.503 2.5035-10123相乘信号-5-4-3-2-1012345x 10501236相乘信号频谱0%% AMµ÷ÖÆfigure('Name','Ðźŵ÷Öƹý³ÌÖв¨Ðμ°ÆäƵÆ×','NumberTitle','off')a0=10^100;f0=2000;fc=20000;fs=1000000;t=[1:0.000001:4];am1=0*cos(2*pi*f0*t); %µ÷ÖÆÐźÅam=a0+am1;t1=cos(2*pi*fc*t); %Ôز¨s_am=am.*t1;AM1=fft(am1); T1=fft(t1); S_AM=fft(s_am);f=(0:3000000)*fs/3000001-fs/2;subplot(3,2,1); plot(t(1:1000),am1(1:1000)); title('ÐÅÏ¢ÐźŲ¨ÐÎ');subplot(3,2,2); plot(f,fftshift(abs(AM1))); title('ÐÅÏ¢ÐźÅƵÆ×');2.52.50012.50022.50032.50042.50052.50062.50072.50082.5009 2.50100.511.5解调信号-5-4-3-2-1012345x 10501236解调信号频谱subplot(3,2,3); plot(t(1:1000),t1(1:1000)); title('Ôز¨ÐźÅ');subplot(3,2,4); plot(f,fftshift(abs(T1))); title('Ôز¨ÐźÅƵÆ×');subplot(3,2,5); plot(t(1:1000),s_am(1:1000)); title('Òѵ÷ÐźÅ');subplot(3,2,6); plot(f,fftshift(abs(S_AM))); title('Òѵ÷ÐźÅƵÆ×');%²úÉúÔëÉùfigure('Name','Ìí¼ÓÔëÉù¼°´øͨÂ˲¨¹ý³Ì²¨Ðμ°ÆäƵÆ×','NumberTitle','off ');snr=5;y=awgn(s_am,snr);fcuts=[16000 17500 22500 24000];mags=[0 1 0];devs=[0.05 0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh,1,1024,fs);st_p=fftfilt(hh,y);Q=fft(st_p);Y=fft(y);f=(0:3000000)*fs/3000001-fs/2;subplot(2,2,1);plot(t(1500001:1501000),y(1500001:1501000));title('Ìí¼ÓÔëÉùºóÐźŲ¨ÐÎ');subplot(2,2,2);plot(f,fftshift(abs(Y)));title('Ìí¼ÓÔëÉùºóÐźÅƵÆ×');subplot(2,2,3);plot(t(1500001:1501000),st_p(1500001:1501000));title('´øͨÂ˲¨ºóÐźŲ¨ÐÎ');subplot(2,2,4); plot(f,fftshift(abs(Q)));title('´øͨÂ˲¨ºóÐźÅƵÆ×');%½âµ÷figure('Name','Ïà¸É½âµ÷ËùµÃ²¨Ðμ°ÆäƵÆ×','NumberTitle','off');ss_am=st_p.*t1;SS_AM=fft(ss_am)f=(0:3000000)*fs/3000001-fs/2;subplot(2,1,1);plot(t(1500001:1503000),ss_am(1500001:1503000));title( 'Ïà³ËÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(SS_AM)));title('Ïà³ËÐźÅƵÆ×'); fcuts1=[2500,30000];mags1=[1 0];devs1=[0.01 0.05];[n,Wn,beta,ftype]=kaiserord(fcuts1,mags1,devs1,fs);hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f]=freqz(hh1,1,1024,fs);m0=fftfilt(hh1,ss_am);M0=fft(m0);f=(0:3000000)*fs/3000001-fs/2;figuresubplot(2,1,1);plot(t(1500001:1501000),m0(1500001:1501000));title('½âµ÷ÐźÅ');subplot(2,1,2); plot(f,fftshift(abs(M0)));title('½âµ÷ÐźÅƵÆ×');11.0005 1.001-101信息信号波形-505x 1050126信息信号频谱1 1.0005 1.001-101载波信号-505x 1050126载波信号频谱11.00051.001-101x 10100已调信号-55x 105012x 10106已调信号频谱2.52.5005 2.501-1-0.500.51x 10100添加噪声后信号波形-505x 105051015x 10105添加噪声后信号频谱2.52.5005 2.501-2-1012x 10100带通滤波后信号波形-55x 1051x 10106带通滤波后信号频谱FM 调制与解调%%FMfigure('Name','FMµ÷ÖƲ¨ÐÎÓëƵÆ×')2.5 2.5005 2.501 2.5015 2.502 2.5025 2.503 2.5035-50510x 1099相乘信号-5-4-3-2-1012345x 105051015105相乘信号频谱2.52.50012.50022.50032.50042.50052.50062.50072.50082.5009 2.5013.93.913.923.93x 1099解调信号-1-0.500.51x 105123105解调信号频谱f0=2000; fc=20000; fs=1000000; Am=1; kf=0.5; Tc=8; Ta=0.001; dt=0.000001;t=[0:1/fs:3];f=(0:length(t)-1)*fs/(length(t))-fs/2;fm0=cos(2*pi*f0*t);mt=fm0;%»ý·ÖÆ÷Éè¼Æw1=0;w2=0;for m=1:length(t)w1=mt(m)+w2;w2=mt(m)+w1;fi(m)=w1/(2*fs);endfi=fi*2*pi/max(abs(fi));I=cos(kf*fi);Q=sin(kf*fi);y1=Am*cos(2*pi*fc*t).*I-Am*sin(2*pi*fc*t).*Q;subplot(2,1,1);plot(t,y1);title('²¨ÐÎ')axis([1e-3 4e-3 -2 2]);Y1=fft(y1);subplot(2,1,2);plot(f,fftshift(abs(Y1))/1e6); title('ƵÆ×') %%Ôز¨ÆµÆ×axis([-4e4 4e4 0 1]);figure('Name','FMµ÷Öƺó¼ÓÔëÉù²¨ÐÎÓë½âµ÷ºó²¨ÐÎÒÔ¼°Â˳ýÖ±Á÷·ÖÁ¿ºóµÄ²¨ÐÎ')y1o=awgn(y1,40);subplot(3,1,1);plot(t,y1o); title('¼ÓÔëÉùºó²¨ÐÎ') %%¼ÓÔëÉùºóµÄÐźÅaxis([1e-3 4e-3 -2 2]);%%´øͨÂ˲¨KSband=2*(3+1)*f0;fcutsb=[fc-KSband-2000 fc-KSbandfc+KSbandfc+KSband+2000]; %%½ÓÊÕ»úÇ°¶Ë´øͨÂ˲¨magsb=[0 1 0];devsb=[0.05 0.01 0.05];[nb,Wnb,betab,ftypeb]=kaiserord(fcutsb,magsb,devsb,fs);hhb=fir1(nb,Wnb,ftypeb,kaiser(nb+1,betab),'noscale'); %´øͨÂ˲¨Æ÷£»st_pb=fftfilt(hhb,y1o);subplot(3,1,2);st_pb=st_pb/1e6;plot(t,st_pb); title('´øͨÂ˲¨Æ÷ºóµÄ²¨ÐÎ')axis([1e-3 4e-3 -2e-6 2e-6]);%΢·ÖÆ÷Éè¼Æfor i=1:length(t)-1 %½ÓÊÕÐźÅͨ¹ý΢·ÖÆ÷´¦Àídiff_st_pb(i)=(st_pb(i+1)-st_pb(i))/dt;endsfm=abs(hilbert(diff_st_pb));subplot(3,1,2);plot(t,[sfm*20 0]);axis([1e-3 4e-3 0 4]);%%¸ôÖ±% KSbandh=2*(3+1)*f0;fcutsh=[0.01 3000];magsh=[0 1];devsh=[0.01 0.05];[nh,Wnh,betah,ftypeh]=kaiserord(fcutsh,magsh,devsh,fs);hhh=fir1(nh,Wnh,ftypeh,kaiser(nh+1,betah),'noscale');sfm_out=fftfilt(hhh,sfm*20);subplot(3,1,3);plot(t,[sfm_out 0]);title('¸ôÖ±ºóµÄ²¨ÐÎ')axis([1e-3 4e-3 -2 2]);11.522.533.54x 10-3-2-1012波形-4-3-2-101234x 10400.51频谱11.522.533.54x 10-3-202加噪声后波形11.522.53 3.54x 10-302411.522.533.54x 10-3-202隔直后的波形。
gnuradio编程范例
GNU Radio是一个开源的信号处理工具,可以用于构建无线通信系统。
以下是一个简单的GNU Radio编程范例,用于实现一个简单的数字调制解调器。
首先,安装GNU Radio和必要的软件包。
你可以在GNU Radio的官方网站上找到安装指南。
创建一个新的GNU Radio流程图。
在终端中输入以下命令:复制代码gnuradio-companion这将打开GNU Radio Companion(GRC)编辑器。
3. 在GRC编辑器中,创建一个新的流程图。
在菜单栏中选择“File”->“New Flow Graph”。
4. 从左侧的模块库中拖动以下模块到工作区域:输入源模块(如“file source”)频率转换模块(如“freq_xlating_fir_filter”)调制模块(如“constellation modulator”)解调模块(如“constellation demodulator”)输出目的地模块(如“file sink”)将这些模块连接在一起,形成完整的信号流图。
确保正确连接每个模块的输入和输出端口。
在频率转换模块中,设置适当的频率和采样率参数,以匹配你的信号频谱和采样率。
在调制模块和解调模块中,选择适当的调制方式(如QPSK、QAM等)。
在文件源模块中,指定要读取的输入文件路径。
在文件接收模块中,指定要写入的输出文件路径。
点击工具栏上的“Run”按钮,开始运行流程图。
你应该能够看到信号的调制和解调结果输出到指定的文件中。
你可以根据需要调整各个模块的参数,以优化性能或适应不同的信号条件。
这个范例演示了如何使用GNU Radio构建一个简单的数字调制解调器。
你可以根据自己的需求扩展和修改这个范例,以实现更复杂的通信系统。
基于Matlab的AM调制解调
基于Matlab的AM调制解调基于Matlab 的AM 调制解调⼀、AM 的调制原理AM 是指对信号进⾏幅度调制[2]。
⼀般做法是先在原信号上叠加⼀个直流信号,以保证信号0)(>+A t f ,然后乘上⼀个⾼频的余弦信号,即得到)]cos()([)(t A t f t g ω+=。
在频域上的效果就是将原信号的域谱移动到W 处,以适合信道传输的最佳频率范围g(t)的包络线即A t f +)(,⽤⼀个简单的包络检测电路就可以接收并还原信号了。
图2.1 仿真原理图调制信号ft t m 2sin )(= (2.1)载波信号t f t c c 2s i n )(= (2.2)调幅信号的时域表达式)()}({0)(t c t m A s t m += (2.3)满⾜条件c f f A t m ≤≤0)( (2.4)幅度调制是⽤调制信号去控制⾼频正弦载波的幅度,使其按调制信号的规律变化的过程[3]。
幅度调制器的⼀般模型如图2.2所⽰。
)(t S mc 图2.2幅度调制模型在图2.2中,若假设滤波器[4]为全通⽹络( H(ω)=1),调制信号mt 叠加直流A 0后再与载波相乘,则输出的信号就是常规双边带(AM )调幅.AM 调制器模型如图2.3所⽰:)(tA 0 )c o s (t c ω图2.3 AM 调制模型AM 信号波形的包络与输⼊基带信号mt 成正⽐,故⽤包络检波的⽅法很容易恢复原始调制信号。
但为了保证包络检波时不发⽣失真,须满⾜max 0)(t m A ≥,否则将出现过调幅现象⽽带来失真。
AM 信号的频谱是由载频分量和上、下两个边带组成(通常称频谱中画斜线的部分为上边带,不画斜线的部分为下边带)。
上边带的频谱与原调制信号的频谱结构相同,下边带是上边带的镜像。
显然,⽆论是上边带还是下边带,都含有原调制信号的完整信息。
故AM 信号是带有载波的双边带信号,它的带宽信号带宽的两倍。
从图中可知发送信号m(t)和直流分量0A 叠加后乘以⾼频载波)(t COS C ω后即可形成AM 调制信号。
am相干解调的程序
am相干解调的程序以下是一个用Python编写的am相干解调的程序示例:```pythonimport numpy as npimport scipy.signal as signaldef am_demodulation(signal, carrier_freq, sampling_freq):# 创建与载波频率相同的参考信号t = np.arange(len(signal)) / sampling_freqreference = np.cos(2 * np.pi * carrier_freq * t)# 相乘得到检测信号demodulated_signal = signal * reference# 低通滤波得到基带信号b, a = signal.butter(4, carrier_freq * 2 / sampling_freq, 'low') baseband_signal = signal.lfilter(b, a, demodulated_signal) return baseband_signal# 示例用法# 创建载波信号carrier_freq = 1000 # 载波频率为1kHzsampling_freq = 10000 # 采样频率为10kHzt = np.arange(0, 1, 1/sampling_freq)carrier_signal = np.cos(2 * np.pi * carrier_freq * t)# 创建调制信号modulation_freq = 100 # 调制频率为100Hzmodulation_signal = np.cos(2 * np.pi * modulation_freq * t)# 将调制信号与载波信号相乘modulated_signal = carrier_signal * modulation_signal# 进行相干解调demodulated_signal = am_demodulation(modulated_signal, carrier_freq, sampling_freq)# 绘制结果import matplotlib.pyplot as pltplt.subplot(3, 1, 1)plt.plot(t, carrier_signal)plt.title('Carrier Signal')plt.subplot(3, 1, 2)plt.plot(t, modulated_signal)plt.title('Modulated Signal')plt.subplot(3, 1, 3)plt.plot(t, demodulated_signal)plt.title('Demodulated Signal')plt.tight_layout()plt.show()```在这个示例中,首先创建了一个载波信号和一个调制信号,然后将它们相乘得到调制信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题涉及的技术:
1)GnuRadio框架;2)MFC编程;3)Python编程;
工
作
任
务
及
要
求
1.了解如何编写MFC程序;
2.理解如何编写GnuRadio信号处理模块;
3.了解如何编写Python程序;
4.开发一个基于GnuRadio的AM和FM信号解调模块,并能够使用MFC程序调用这个模块。
5.查找相关文献
6.论文写作
以上内容由指导教师填写
学院
审核
年月日
本科毕业论文(设计)任务书
题目
基于GNURADIO的AM和FM信号解调软件开发
题目
来源
□科研项目□生产实践
■自选题目□其他
题目
类型
□理论研究□科学ห้องสมุดไป่ตู้验
■设计开发□其他
选
题
背
景
及
目
的
开源软件无线电GNU Radio是免费的软件开发工具套件。它提供信号运行和处理模块,用它可以在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。这个套件广泛用于业余爱好者,学术机构和商业机构用来研究和构建无线通信系统。