├── questions.doc ├── q2 ├── frankQ.m ├── ber.m ├── srrc.m ├── qpsk_with_ber.m └── qpsk_zf_ls_with_figure.m └── q1 ├── srrc.m └── qpsk_m.m /questions.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiyinxi/qpsk-ls-zf-matlab/HEAD/questions.doc -------------------------------------------------------------------------------- /q2/frankQ.m: -------------------------------------------------------------------------------- 1 | function [FrankZ]=frankQ(U) 2 | 3 | for q = 0:(sqrt(U)-1) 4 | for p = 0:(sqrt(U)-1) 5 | F(p+q*sqrt(U)+1) = 2*pi*p*q/sqrt(U); 6 | end 7 | end 8 | 9 | I = cos(F); 10 | Q = sin(F); 11 | FrankZ = I + 1i*Q; 12 | end 13 | -------------------------------------------------------------------------------- /q2/ber.m: -------------------------------------------------------------------------------- 1 | %%%***---------------------------求ber曲线----------------------------***%%% 2 | 3 | tic 4 | clc 5 | clear 6 | close all 7 | SNRdB=[2:13]; %信噪比(dB)的范围 8 | for j=1:length(SNRdB) 9 | snr(j)=10^(SNRdB(j)/10); 10 | err_rate(j)=qpsk_with_ber(snr(j)) ; 11 | end 12 | for i=1:length(SNRdB) 13 | snr=10^(SNRdB(i)/10); 14 | theo_pb(i)=(1/2)*erfc(sqrt(snr)); 15 | end 16 | figure 17 | semilogy(SNRdB,err_rate,'*');hold on 18 | semilogy(SNRdB,theo_pb);grid; 19 | title('QPSK的ber曲线'); 20 | xlabel('Eb/n0(dB)');ylabel('P_e'); 21 | legend('仿真误比特率','过莱斯信道+高斯噪声+迫零均衡误比特率'); 22 | 23 | toc -------------------------------------------------------------------------------- /q1/srrc.m: -------------------------------------------------------------------------------- 1 | function Hd = srrc 2 | %SRRC 返回离散时间滤波器对象。 3 | 4 | % MATLAB Code 5 | % Generated by MATLAB(R) 9.9 and DSP System Toolbox 9.11. 6 | % Generated on: 10-Dec-2020 13:35:56 7 | 8 | % FIR Window Raised-cosine filter designed using the FIRRCOS function. 9 | 10 | % All frequency values are in Hz. 11 | Fs = 800; % Sampling Frequency 12 | 13 | N = 10; % Order 14 | Fc = 100; % Cutoff Frequency 15 | TM = 'Rolloff'; % Transition Mode 16 | R = 0.25; % Rolloff 17 | DT = 'sqrt'; % Design Type 18 | Beta = 0.5; % Window Parameter 19 | 20 | % Create the window vector for the design algorithm. 21 | win = kaiser(N+1, Beta); 22 | 23 | % Calculate the coefficients using the FIR1 function. 24 | b = firrcos(N, Fc/(Fs/2), R, 2, TM, DT, [], win); 25 | Hd = dfilt.dffir(b); 26 | 27 | % [EOF] 28 | -------------------------------------------------------------------------------- /q2/srrc.m: -------------------------------------------------------------------------------- 1 | function Hd = srrc 2 | %SRRC 返回离散时间滤波器对象。 3 | 4 | % MATLAB Code 5 | % Generated by MATLAB(R) 9.9 and DSP System Toolbox 9.11. 6 | % Generated on: 10-Dec-2020 13:35:56 7 | 8 | % FIR Window Raised-cosine filter designed using the FIRRCOS function. 9 | 10 | % All frequency values are in Hz. 11 | Fs = 800; % Sampling Frequency 12 | 13 | N = 10; % Order 14 | Fc = 100; % Cutoff Frequency 15 | TM = 'Rolloff'; % Transition Mode 16 | R = 0.25; % Rolloff 17 | DT = 'sqrt'; % Design Type 18 | Beta = 0.5; % Window Parameter 19 | 20 | % Create the window vector for the design algorithm. 21 | win = kaiser(N+1, Beta); 22 | 23 | % Calculate the coefficients using the FIR1 function. 24 | b = firrcos(N, Fc/(Fs/2), R, 2, TM, DT, [], win); 25 | Hd = dfilt.dffir(b); 26 | 27 | % [EOF] 28 | -------------------------------------------------------------------------------- /q2/qpsk_with_ber.m: -------------------------------------------------------------------------------- 1 | function [err]=qpsk_with_ber(SNR) 2 | 3 | 4 | %%%%%---------------------- 题目三 qpsk3.m ------------------%%%%% 5 | %%% 没有乘法器那边的调制,是映射之后ifft求时域波形 6 | 7 | fs=240;%符号率:240MHz 8 | dt=1/fs; 9 | n=1024; 10 | a=11; 11 | m=n*2*(a-1); 12 | symbol=60;%符号率:60MHz 13 | 14 | %% 信号产生 15 | signal1=randi([0 1],1,m); 16 | signal=(signal1*2-1); 17 | %% qpsk调制-->iq映射 18 | ich=[]; 19 | qch=[]; 20 | for j=1:m/2 21 | ich(j)=signal(2*j-1); 22 | qch(j)=signal(2*j); 23 | end 24 | 25 | %% qpsk调制-->产生复信号 26 | kmod=1./sqrt(2); 27 | ich1=ich.*kmod; 28 | qch1=qch.*kmod; 29 | x=ich1+qch1.*1i; 30 | 31 | %% 插导频 32 | frank=frankQ(n); 33 | x_re=reshape(x,[n,a-1]); 34 | for j=1:a 35 | if(j==1) 36 | jiadaopin(:,j)=frank'; 37 | else 38 | jiadaopin(:,j)=x_re(:,j-1); 39 | end 40 | end 41 | ch2=ifft(jiadaopin);%%转换为时域信号 42 | %% 加CP 43 | for j=1:a 44 | ch3(:,j)=[ch2(end-127:end,j);ch2(:,j)]; 45 | end 46 | 47 | %% P/S 48 | ch4=reshape(ch3,1,[]); 49 | 50 | %% 上采样和脉冲成型滤波 51 | 52 | % 脉冲形成:升余弦滤波器 53 | r = 0.25; %滚降系数 54 | delay = 8; %延时 55 | IPOINT = 4; %内插倍数 56 | h_rcos = rcosdesign(r, delay, IPOINT, 'sqrt'); %生成时域响应h 57 | len_fir = length(h_rcos); 58 | len_ch4 = length(ch4); 59 | 60 | signal_txr = upfirdn(ch4, h_rcos, 4 ); 61 | signal_tx=signal_txr(2*delay-1:end-2*delay+1); 62 | %% 过莱斯信道 63 | 64 | %%%%%%%%莱斯信道 65 | %%%%%%多径时延:[0 0.5us 1.5us] 66 | %%%%%%多径功率:[0 -3dB -9 dB] 67 | n_delay1=fix(0.5*symbol); 68 | n_delay2=fix(1.5*symbol); 69 | signal_1=signal_tx; 70 | signal_2=10^(-3/20)*[zeros(1,n_delay1),signal_1(1:end-n_delay1)]; 71 | signal_3=10^(-9/20)*[zeros(1,n_delay2),signal_1(1:end-n_delay2)]; 72 | signal_rx_raly=signal_1+signal_2+signal_3; 73 | % signal_rx_raly=signal_tx; 74 | %% 加高斯噪声 75 | signal_rx=awgn(signal_rx_raly,SNR - 10*log10(IPOINT),'measured'); 76 | %% 匹配滤波 77 | signal_fira = upfirdn(signal_rx, h_rcos, 1); %对信号进行匹配滤波 78 | 79 | signal_fir=signal_fira(2*delay+1:end-2*delay); 80 | 81 | %% 下采样 82 | 83 | receice_s=downsample(signal_fir, 4); 84 | 85 | %% S/P 86 | receice_p=reshape(receice_s,[],a); 87 | 88 | %% 去cp 89 | 90 | receice_p_ncp=receice_p(129:end,:); 91 | 92 | %% fft 93 | fft_data=fft(receice_p_ncp); 94 | 95 | %% 信道估计与均衡-->信道估计(频域ls估计) 96 | frank_bn=fft_data(:,1); 97 | %%%频域信道估计值: 98 | H=frank_bn./frank'; 99 | %%%时域信道估计值 100 | h=ifft(H); 101 | %% 信道估计与均衡-->频域迫零均衡 102 | data_bal_f=fft_data./H; 103 | 104 | 105 | %% P/S+去导频 106 | data_bal_p=reshape(data_bal_f(:,2:end),1,[]); 107 | %% 解调器 108 | 109 | reciv_i=real(data_bal_p); 110 | reciv_q=imag(data_bal_p); 111 | receive_data=[]; 112 | for j=1:length(reciv_i) 113 | receive_data=[receive_data sign(reciv_i(j)) sign(reciv_q(j))]; 114 | end 115 | receive_data=(receive_data+1)/2; 116 | err=biterr(receive_data,signal1); 117 | err=err/10240/2; 118 | end 119 | -------------------------------------------------------------------------------- /q2/qpsk_zf_ls_with_figure.m: -------------------------------------------------------------------------------- 1 | %%%%%---------------------- 题目三 qpsk3.m ------------------%%%%% 2 | %%% 没有乘法器那边的调制,是映射之后ifft求时域波形 3 | clear 4 | close all 5 | tic 6 | fs=240;%符号率:240MHz 7 | dt=1/fs; 8 | n=1024; 9 | a=11; 10 | m=n*2*(a-1); 11 | symbol=60;%符号率:60MHz 12 | SNR=30;%snr=30 13 | 14 | %% 信号产生 15 | signal1=randi([0 1],1,m); 16 | signal=(signal1*2-1); 17 | %% qpsk调制-->iq映射 18 | ich=[]; 19 | qch=[]; 20 | for j=1:m/2 21 | ich(j)=signal(2*j-1); 22 | qch(j)=signal(2*j); 23 | end 24 | 25 | %% qpsk调制-->产生复信号 26 | kmod=1./sqrt(2); 27 | ich1=ich.*kmod; 28 | qch1=qch.*kmod; 29 | x=ich1+qch1.*1i; 30 | 31 | %% 插导频 32 | frank=frank(n); 33 | x_re=reshape(x,[n,a-1]); 34 | for j=1:a 35 | if(j==1) 36 | jiadaopin(:,j)=frank'; 37 | else 38 | jiadaopin(:,j)=x_re(:,j-1); 39 | end 40 | end 41 | ch2=ifft(jiadaopin);%%转换为时域信号 42 | %% 加CP 43 | for j=1:a 44 | ch3(:,j)=[ch2(end-127:end,j);ch2(:,j)]; 45 | end 46 | 47 | %% P/S 48 | ch4=reshape(ch3,1,[]); 49 | 50 | %% 上采样和脉冲成型滤波 51 | 52 | % 脉冲形成:升余弦滤波器 53 | r = 0.25; %滚降系数 54 | delay = 8; %延时 55 | IPOINT = 4; %内插倍数 56 | h_rcos = rcosdesign(r, delay, IPOINT, 'sqrt'); %生成时域响应h 57 | len_fir = length(h_rcos); 58 | len_ch4 = length(ch4); 59 | 60 | signal_txr = upfirdn(ch4, h_rcos, 4 ); 61 | signal_tx=signal_txr(2*delay-1:end-2*delay+1); 62 | eyediagram(fft(signal_tx),2); 63 | t=0:dt/4:(length(abs(signal_tx))-1)*dt/4; %时间向量 64 | figure;plot(t,abs(signal_tx));title('A点波形');xlabel('t/us');ylabel('幅值/V'); 65 | scatterplot(signal_tx);title('A点星座图'); 66 | signal_tx_psd=abs(fftshift(fft(signal_tx))).*conj(abs(fftshift(fft(signal_tx)))); 67 | w=(-length(signal_tx_psd)/2:1:length(signal_tx_psd)/2-1)*fs/4/length(signal_tx_psd); 68 | figure;plot(w,signal_tx_psd);title('A点功率谱');xlabel('频率/mHz');ylabel('幅值/V'); 69 | %% 过莱斯信道 70 | 71 | %%%%%%%%莱斯信道 72 | %%%%%%多径时延:[0 0.5us 1.5us] 73 | %%%%%%多径功率:[0 -3dB -9 dB] 74 | n_delay1=fix(0.5*symbol); 75 | n_delay2=fix(1.5*symbol); 76 | signal_1=signal_tx; 77 | signal_2=10^(-3/20)*[zeros(1,n_delay1),signal_1(1:end-n_delay1)]; 78 | signal_3=10^(-9/20)*[zeros(1,n_delay2),signal_1(1:end-n_delay2)]; 79 | signal_rx_raly=signal_1+signal_2+signal_3; 80 | % signal_rx_raly=signal_tx; 81 | %% 加高斯噪声 82 | signal_rx=awgn(signal_rx_raly,SNR - 10*log10(IPOINT),'measured'); 83 | % signal_rx=signal_tx; 84 | %% 匹配滤波 85 | % signal_irx=signal_itx; 86 | % signal_qrx=signal_qtx; 87 | signal_fira = upfirdn(signal_rx, h_rcos, 1); %对信号进行匹配滤波 88 | 89 | signal_fir=signal_fira(2*delay+1:end-2*delay); 90 | 91 | scatterplot(fft(signal_fir));title('B点星座图'); 92 | t=0:dt/4:(length(abs(signal_fir))-1)*dt/4; %时间向量 93 | figure;plot(t,abs(signal_fir));title('B点波形');xlabel('t/us');ylabel('幅值/V'); 94 | eyediagram(fft(signal_fir),2); 95 | signal_fir_psd=abs(fftshift(fft(signal_tx))).*conj(abs(fftshift(fft(signal_tx)))); 96 | w=(-length(signal_fir_psd)/2:1:length(signal_fir_psd)/2-1)*fs/4/length(signal_fir_psd); 97 | figure;plot(w,signal_fir_psd);title('B点功率谱');xlabel('频率/mHz');ylabel('幅值/V'); 98 | %% 下采样 99 | 100 | receice_s=downsample(signal_fir, 4); 101 | 102 | %% S/P 103 | receice_p=reshape(receice_s,[],a); 104 | 105 | %% 去cp 106 | 107 | receice_p_ncp=receice_p(129:end,:); 108 | 109 | %% fft 110 | fft_data=fft(receice_p_ncp); 111 | 112 | %% 信道估计与均衡-->信道估计(频域ls估计) 113 | frank_bn=fft_data(:,1); 114 | %%%频域信道估计值: 115 | H=frank_bn./frank'; 116 | %%%时域信道估计值 117 | h=ifft(H); 118 | figure,impz(h)%信道时域响应 119 | figure,freqz(h)%信道频域响应 120 | %% 信道估计与均衡-->频域迫零均衡 121 | data_bal_f=fft_data./H; 122 | 123 | 124 | %% P/S+去导频 125 | data_bal_p=reshape(data_bal_f(:,2:end),1,[]); 126 | scatterplot(data_bal_p);title('C点星座图'); 127 | eyediagram(data_bal_p,2); 128 | t=0:dt/4:(length(abs(ifft(data_bal_p)))-1)*dt; %时间向量 129 | figure;plot(abs(ifft(data_bal_p)));title('C点波形');xlabel('t/us');ylabel('幅值/V'); 130 | data_bal_p_psd=abs(fftshift(data_bal_p)).*conj(abs(fftshift(data_bal_p))); 131 | w=(-length(data_bal_p_psd)/2:1:length(data_bal_p_psd)/2-1)*fs/length(data_bal_p_psd); 132 | figure;plot(data_bal_p_psd);title('C点功率谱');xlabel('频率/mHz');ylabel('幅值/V'); 133 | %% 解调器 134 | 135 | reciv_i=real(data_bal_p); 136 | reciv_q=imag(data_bal_p); 137 | receive_data=[]; 138 | for j=1:length(reciv_i) 139 | receive_data=[receive_data sign(reciv_i(j)) sign(reciv_q(j))]; 140 | end 141 | receive_data=(receive_data+1)/2; 142 | biterr(receive_data,signal1) 143 | 144 | 145 | toc -------------------------------------------------------------------------------- /q1/qpsk_m.m: -------------------------------------------------------------------------------- 1 | clc 2 | clear 3 | close all 4 | no_seq = 1000;%%如果出眼图的话这里最好设成1k,不然运算太慢 5 | Rb=100; %信息速率,单位mbit/s 6 | Tb=1/Rb; 7 | Ts=2*Tb; 8 | fc=2*Rb; %载波速率 9 | A=1; 10 | constant=4; %抽样常数 11 | fs=constant*fc; %抽样频率 12 | ts=1/fs; %抽样间隔 13 | N=Tb/ts; %一个bit内样点数 14 | a=randi([0 1],1,no_seq); %bit源 15 | No_sample=length(a)*N; %样点总数 16 | 17 | %% 调制前内插与A点波形显示 18 | a1=a(:); 19 | a2=a1*ones(1,N); 20 | a3=a2'; 21 | a4=reshape(a3,1,[]); 22 | t=[0:No_sample-1]*ts; 23 | 24 | figure(1) 25 | stem(a);axis([0 20 -0.2 1.2]);title('bit源(A)') 26 | 27 | %% 产生B方式的QPSK信号并显示B点图形 28 | mapping=[5*pi/4 3*pi/4 7*pi/4 pi/4]; 29 | gl=[-1-i -1+i 1-i 1+i]; 30 | qpsk=[]; 31 | qpsk_gl=[]; 32 | for k=1:2:no_seq 33 | index=0; 34 | for j=k:k+1 35 | index=2*index+a(j); 36 | end 37 | index=index+1; 38 | theta=mapping(index); 39 | thegl=gl(index); 40 | qpsk_gl=[qpsk_gl thegl]; 41 | qpsk=[qpsk,A*cos(2*pi*fc*t((k-1)*N+1:(k+1)*N)+theta)]; 42 | end 43 | scatterplot(qpsk_gl);title('调制好的星座图'); 44 | figure(3) 45 | subplot(311) 46 | plot(t*1000,qpsk);grid;axis([0 100 -1.2 1.2]);title('过调制信号(B)') 47 | xlabel('t/ns');ylabel('幅度/V'); 48 | 49 | df=fs/2000; 50 | f=[0:df:df*(2000-1)]-fs/2; 51 | QPSK=fft(qpsk,2000)/fs; 52 | QPSK0=abs(fftshift(QPSK)); 53 | figure(3) 54 | subplot(312) 55 | plot(f,QPSK0);grid; 56 | axis([-400 400 0 0.2]);title('过调制信号频谱') 57 | ylabel('频谱/V');xlabel('频率/mHz'); 58 | 59 | subplot(313) 60 | qpsk0_psd=QPSK0.*conj(QPSK0); 61 | plot(f,qpsk0_psd);grid; 62 | axis([-400 400 0 0.1]);title('过调制信号功率谱') 63 | ylabel('频谱/V');xlabel('频率/mHz'); 64 | 65 | 66 | %% 上采样与脉冲成型滤波 67 | % 脉冲形成:升余弦滤波器 68 | r = 0.25; %滚降系数 69 | delay = 8; %延时 70 | IPOINT = 4; %内插倍数 71 | h_rcos = rcosdesign(r, delay, IPOINT, 'sqrt'); %生成时域响应h 72 | len_fir = length(h_rcos); 73 | len_qpsk = length(qpsk); 74 | qpsk_unfir=qpsk; 75 | qpsk1 = upfirdn(qpsk_unfir, h_rcos, 4 ); %对信号进行匹配滤波 76 | qpsk=qpsk1(fix(len_fir/2+1):fix((len_fir/2)+len_qpsk*4)); 77 | % C点图形 78 | figure(4) 79 | subplot(211) 80 | t1=[0:No_sample*4-1]*ts/4; 81 | plot(t1*1000,qpsk);grid;axis([0 100 -1.2 1.2]);title('脉冲成型信号(C)') 82 | xlabel('t/ns');ylabel('幅度/V'); 83 | 84 | df=fs/2000; 85 | f=[0:df*4:df*(2000-1)*4]-fs*4/2; 86 | QPSK=fft(qpsk,2000)/fs; 87 | QPSK1=abs(fftshift(QPSK)); 88 | figure(4) 89 | subplot(212) 90 | plot(f,QPSK1);grid; 91 | axis([-400 400 0 0.2]);title('脉冲成型信号频谱') 92 | ylabel('频谱/V');xlabel('频率/mHz'); 93 | eyediagram(qpsk,6);title('脉冲成型(无噪声原始)眼图'); 94 | 95 | %% 误码率仿真 96 | Eb=(1/2)*(A^2)*Tb; 97 | snr_in_db1=-5:10; 98 | for k=1:length(snr_in_db1) 99 | %% 信号过高斯噪声信道 100 | snr=10^(snr_in_db1(k)/10); 101 | n0=Eb/snr; 102 | delta=sqrt(n0*(fs/2)); 103 | noise=delta*randn(1,No_sample*4); 104 | rqpsk_unfir=qpsk+noise; 105 | if (k==10) 106 | eyediagram(rqpsk_unfir,6);title('ebn0=5情况下加噪声后眼图') 107 | end 108 | if (k==15) 109 | eyediagram(rqpsk_unfir,6);title('ebn0=10情况下加噪声后眼图') 110 | end 111 | 112 | len_qpsk = length(rqpsk_unfir); 113 | rqpsk_fir = upfirdn(rqpsk_unfir, h_rcos, 1); %对信号进行匹配滤波 114 | len_fir = fix(length(h_rcos)/4); 115 | len_rqpsk = length(rqpsk_unfir)/4; 116 | rqpsk_fir_f=rqpsk_fir(len_fir*2+1:length(rqpsk_unfir)+len_fir*2); 117 | if (k==10) 118 | 119 | figure 120 | subplot(311) 121 | plot(t1*1000,rqpsk_fir_f);grid;axis([0 40 -5 5]);title('ebn0=5情况下匹配滤波信号(D)') 122 | xlabel('t/ns');ylabel('幅度/V'); 123 | 124 | subplot(312) 125 | f_rfir=[0:df*4:df*(2000-1)*4]-fs*4/2; 126 | QPSK_rfir=fft(rqpsk_fir_f,2000)/fs; 127 | QPSK1_rfir=abs(fftshift(QPSK_rfir)); 128 | plot(f,QPSK1_rfir);grid; 129 | axis([-400 400 0 0.7]);title('ebn0=5情况下匹配滤波信号频谱') 130 | ylabel('频谱/V');xlabel('频率/mHz'); 131 | 132 | subplot(313) 133 | qpsk1_rfir_psd=QPSK1_rfir.*conj(QPSK1_rfir); 134 | plot(f,qpsk1_rfir_psd);grid; 135 | axis([-400 400 0 0.1]);title('ebn0=5情况下匹配滤波信号功率谱') 136 | ylabel('频谱/V');xlabel('频率/mHz'); 137 | 138 | 139 | end 140 | rqpsk=rqpsk_fir(17:4:end-16);%降采样 141 | if (k==10) 142 | figure 143 | plot(t*1000,rqpsk);axis([0 40 -5 5]);title('ebn0=5情况下下采样信号(E)') 144 | xlabel('t/ns');ylabel('幅度/V'); 145 | eyediagram(rqpsk,6);title('ebn0=5情况下下采样信号眼图') 146 | end 147 | if (k==15) 148 | eyediagram(rqpsk,6);title('ebn0=10情况下下采样信号眼图') 149 | end 150 | 151 | 152 | % rqpsk=rqpsk_unfir; 153 | %% 信号解调 154 | Xc1_unfil=rqpsk.*cos(2*pi*fc*t); 155 | Xs1_unfil=-rqpsk.*sin(2*pi*fc*t); 156 | 157 | %% 低通滤波 158 | Srrc=srrc; 159 | S_n=Srrc.Numerator; 160 | len_srrc=fix(length(S_n)/2); 161 | len_Xc1_unfil=length(Xc1_unfil); 162 | Xc1_fil=conv(S_n,Xc1_unfil); 163 | Xs1_fil=conv(S_n,Xs1_unfil); 164 | Xc1=Xc1_fil(len_srrc+1:len_Xc1_unfil+len_srrc); 165 | Xs1=Xs1_fil(len_srrc+1:len_Xc1_unfil+len_srrc); 166 | 167 | 168 | 169 | %% 抽样判决 170 | Xc2=reshape(Xc1,Ts/ts,[]); 171 | Xc=sum(Xc2)*ts; 172 | % Xc=16*Xc2(9,:)*ts; 173 | 174 | Xs2=reshape(Xs1,Ts/ts,[]); 175 | Xs=sum(Xs2)*ts; 176 | % Xs=16*Xs2(9,:)*ts;%%单纯取一点抽样会导致误码率上升 177 | if(k==10) 178 | scatterplot(200*(Xc+1i*Xs));title('ebn0=5情况下接收端星座图'); 179 | end 180 | if(k==15) 181 | scatterplot(200*(Xc+1i*Xs));title('ebn0=10情况下接收端星座图'); 182 | end 183 | decis=[]; 184 | for m=1:no_seq/2 185 | theta=mod(angle(Xc(m)+1i*Xs(m)),2*pi); 186 | if(theta>3*pi/2) 187 | decis=[decis 1 0]; 188 | elseif(theta