file name qpskm Written by Dr James S Kang Cal Poly Pomona P
%file name: qpsk.m %Written by Dr. James S. Kang, Cal Poly Pomona. %Plot of QPSK waveform and spectrum. %d = input data such as [1 1 0 0 1 0 0 1 1 1]. %fb = data rate in bps. %fc = carrier frequency. %Ac = Amplitude of the carrier. %fstart = start frequency for spectrum plot. %fend = end frequency for spectrum plot. %To run the program, try % >>qpsk([1 1 0 0 1 0 1 0 1 1],500,1000,1,0,4000) clc clear all d=[1 1 0 0 1 0 1 0 1 1]; fb=600; fc=1100; Ac=1.5; fstart=0; fend=4000; %function[s] = qpsk(d,fb,fc,Ac,fstart,fend) N=size(d,2); %N = number of data bits. if rem(N,2) == 1 N=N+1 d(N)=0 end N2=N/2; M=32; %M = number of samples per bit duration. tb=1/fb;tc=1/fc; Nc=floor(M*tc/tb); %Nc = number of samples per period of carrier. step=tb/M; %step = sampling interval. for j = 1:N if d(j) == 1 for i = 1:M m((j-1)*M+i)=1; end else for i = 1:M m((j-1)*M+i)=-1; end end end for j = 1:N2 if d(j*2-1) == 1 for i = 1:2*M mi((j-1)*2*M+i)=1; si((j-1)*2*M+i)=Ac*cos(2*pi*(i-1)/Nc); end else for i = 1:2*M mi((j-1)*2*M+i)=-1; si((j-1)*2*M+i)=Ac*cos(2*pi*(i-1)/Nc+pi); end end if d(j*2) == 1 for i = 1:2*M mq((j-1)*2*M+i)=1; sq((j-1)*2*M+i)=Ac*sin(2*pi*(i-1)/Nc); end else for i = 1:2*M mq((j-1)*2*M+i)=-1; sq((j-1)*2*M+i)=Ac*sin(2*pi*(i-1)/Nc+pi); end end end for k=1:M*N t(k)=(k-1)*step; s(k)=si(k)+sq(k); end figure subplot(3,1,1) plot(t,m) grid %xlabel(\'Time\') ylabel(\'Amplitude\') title(\'Input Waveform\') subplot(3,1,2) plot(t,mi) grid %xlabel(\'Time\') ylabel(\'Amplitude\') title(\'I Channel Waveform\') subplot(3,1,3) plot(t,mq) grid xlabel(\'Time\') ylabel(\'Amplitude\') title(\'Q Channel Waveform\') figure subplot(3,1,1) plot(t,si) grid %xlabel(\'Time\') ylabel(\'Amplitude\') title(\'I Channel Modulated Waveform\') subplot(3,1,2) plot(t,sq) grid %xlabel(\'Time\') ylabel(\'Amplitude\') title(\'Q Channel Modulated Waveform\') subplot(3,1,3) plot(t,s) grid xlabel(\'Time\') ylabel(\'Amplitude\') title(\'QPSK Waveform\') % %Spectrum of QPSK % M1=64; %M1 = number of points per lobe. fstep=fb/M1; %fstep = freq. step. Nf=floor((fend-fstart)/fstep); %Nf = total number of freq. points computed. for i = 1:Nf f(i)=(i-1)*fstep+fstart; if f(i) == fc S(i)=Ac^2*tb; else S(i)=(Ac^2*tb)*(sin(pi*(f(i)-fc)*2*tb)/(pi*(f(i)-fc)*2*tb))^2; end end for i = 1:Nf dBS(i) = 10*log(S(i)); if dBS(i) < -200 dBS(i)=-200; end end figure subplot(2,1,1) plot(f,S) grid %xlabel(\'Frequency\') ylabel(\'Magnitude\') title(\'QPSK Spectrum (Linear)\') subplot(2,1,2) plot(f,dBS) grid xlabel(\'Frequency\') ylabel(\'Magnitude\') title(\'QPSK Spectrum (dB)\') %end try this code and post what u observed.... answer needed as soon as possible
Solution
It is a QSPK MATLAB simulation programme of Communication Engineering.
QPSK simulation, the main principle is to use its own function, did not make use of the internal function.
![%file name: qpsk.m %Written by Dr. James S. Kang, Cal Poly Pomona. %Plot of QPSK waveform and spectrum. %d = input data such as [1 1 0 0 1 0 0 1 1 1]. %fb = dat %file name: qpsk.m %Written by Dr. James S. Kang, Cal Poly Pomona. %Plot of QPSK waveform and spectrum. %d = input data such as [1 1 0 0 1 0 0 1 1 1]. %fb = dat](/WebImages/15/file-name-qpskm-written-by-dr-james-s-kang-cal-poly-pomona-p-1024725-1761530392-0.webp)