BÁO CÁO KHOA HỌC, TỐT NGHIỆP, LUẬN VĂN,
Trường Đại Học Tôn Đức Thắng Khoa Điện – Điện Tử Ngành Điện Tử Viển Thông LUẬN VĂN TỐT NGHIỆP NGHIÊN CỨU MÔ PHỎNG VÀ ĐÁNH GIÁ HỆ THỐNG MIMO-STBC TRONG MÔI TRƯỜNG SUY HAO RAYLEIGH GVHD SVTH LỚP MSSV : : : : T.S LÊ QUỐC CƯỜNG ĐẶNG VĂN TÂN 08DD2D 081516D TP Hồ Chí Minh Tháng 1/2013 LỜI CẢM ƠN Trong suốt thời gian học tập trường Đại học Tôn Đức Thắng sở thành phố Hồ Chí Minh, nhờ quan tâm giúp đỡ tận tình q thầy cơ, bạn sinh viên, em ãđ d ần dần có kiến thức, kinh nghiệm lĩnh vực điện tử-viễn thơng áp dụng vào thực tiễn Có ngày hơm nh dạy dỗ, nhiệt tình giảng dạy điều em chưa biết, chưa hiểu rõ giảng đường học Và em xin gửi lời cảm ơn chân thành đến thầy Lê Quốc Cường, thầy giảng dạy cho chúng em kiến thức bổ ích, kinh nghiệm quý báu, tận tình hướng dẫn em suốt trình thực đề tài Em xin chân thành gửi đến quý thầy cô lời cảm ơn sâu sắc Kính chúc q thầy sức khỏe thành cơng công việc sống Trong trình thực đề tài, dù em ln cố gắng để đạt kết tốt nhất, thời gian cho phép khơng nhiều nên khơng tránh khỏi cịn có thiếu sót Em mong nhận dạy, góp ý q thầy Những lời dạy kinh nghiệm quý giá để em phát triển đề tài, nghiên cứu sâu để nắm vững triển khai thực tế TP Hồ Chí Minh, Tháng 1- 2013 ĐẶNG VĂN TÂN M ục lục LỜI CẢM ƠN PHỤ LỤC 1: DANH MỤC HÌNH VẼ PHỤ LỤC 2: THUẬT NGỮ VIẾT TẮT GIỚI THIỆU CHUNG VỀ ĐỀ TÀI Tính cần thiết đề tài - Mục đích đề tài - Những vấn đề đề tài Phạm vi đề tài Bố cục đề tài CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG 3G+ 1.1 Sự phát triển thông tin di động - 1.1.1 Công nghệ thông tin di động 1G 1.1.2 Công nghệ thông tin di động 2G 1.1.3 Công nghệ thông tin di động 3G 1.1.4 Các Release 3GPP 1.2 Tổng quan về HSPA 1.2.1 Giao diện vô tuyến HSPA cho người sử dụng 10 1.2.2 Nguyên lý hoạt động của HSDPA - 12 1.2.3 Khả của các HSPA+ 13 1.3 Tổng kết 14 CHƯƠNG 2: CƠNG NGHỆ MIMO 2.1 Mơ hình hệ thống MIMO 15 2.2 Dung lượng hệ thống MIMO - 17 2.3 Kênh chưa biết truyền đến đầu phát - 18 2.4 Kênh nhận biết đầu phát - 20 2.4.1 Water pouring Principle 21 2.4.2 Dung lượng kênh nhận biết đến đầu phát - 23 2.5 Kênh xác định 24 2.5.1 Dung lượng kênh SIMO 24 2.5.2 Dung lượng kênh MISO 25 2.6 Các kênh ngẫu nhiên - 27 2.6.1 Dung lượng Ergodic - 27 2.6.2 Dung lượng hao hụt (Outage) 29 2.7 Ảnh hưởng tương quan fading dung lượng MIMO - 31 2.8 Ảnh hưởng LOS dung lượng MIMO 35 2.9 Ảnh hưởng XPD dung lượng MIMO - 37 2.10 Tổng kết - 40 CHƯƠNG 3: MÃ KHỐI KHÔNG GIAN THỜI GIAN 3.1 Giới thiệu - 41 3.2 Mẫu phân tập trễ - 41 3.3 Mã không gian – thời gian Alamouti - 42 3.3.1 Maximumlikeli hood - 44 3.3.2 Kết hợp tỉ số tối đa (MRC) 45 3.3.3 Phân tập phát - 46 3.3.4 Tóm tắt mẫu Alamouti 46 3.4 Mã không gian thời gian 47 3.4.1 STBC cho tương quan tín hiệu thực 49 3.4.2 STBC cho tương quan tín hiệu phức - 52 3.5 Giải mã STBC 53 3.6 Ước lượng kênh khơng hồn tồn - 55 3.6.1 Ước lượng bình phương trung bình nhỏ 56 3.6.2 Ước lượng bình phương trung bình tối thiểu 57 3.6.3 Thuật toán ước lượng kênh phương pháp FFT 59 3.7 Ảnh hưởng hiệu ứng tương quan Antenna - 62 3.8 Truyền dẫn mode riêng có ưu 63 3.9 Kết luận - 65 CHƯƠNG 4: MÔ PHỎNG 4.1 Giới thiệu MATLAB 7.8.0 (R2009a) 66 4.2 Kết mô 67 TỔNG KẾT 73 TÀI LIỆU THAM KHẢO 75 PHỤ LỤC 3: CODE MÔ PHỎNG CHO HỆ THỐNG STBC GIỚI THIỆU CHUNG VỀ ĐỀ TÀI Tính cần thiết đề tài Trong năm gần đây, nhu cầu truyền số liệu tốc độ cao thông tin di động bùng nổ xuất ngày nhiều loại hình dịch vụ khơng dây tốc độ cao như: Internet không dây, dung lượng hộp thư ngày lớn, dịch vụ hội nghị truyền hình khơng dây, … Và phát triển đặt thách thức lớn: Băng thông dành cho nhà cung cấp dịch vụ thường xuyên bị giới hạn Do nhiều yếu tố khách quan chủ quan việc phân bổ thêm băng thơng cho loại hình dịch vụ thường khó khăn chậm trễ Các yêu cầu công suất mà thiết bị sử dụng phải giới hạn thấp tốt thời gian sử dụng thiết bị lần sạc dài Yếu tố đặc biệt quan trọng thiết bị đầu cuối mạng thông tin di động Những thách thức đặt cho nhà thiết kế hệ thống vô tuyến trước vấn đề có hai mặt trái ngược hệ thống vố tuyến thiết kế tương lai phải truyền tốc độ cao cải thiện hiệu suất hoạt động hệ thống băng thông truyền công suất phát tăng chí khơng tăng Một công nghệ phát triển nh ằm giải vấn đề cơng nghệ đa đầu vào đa đầu (MIMO, Multi-Input Multi-Output) Trong cơng nghệ MIMO kỹ thuật mã hóa khơng gian – thời gian có vai trị quan trọng Mã hóa khơng gian – thời gian kỹ thuật xử lý tín hiệu/mã hóa sử dụng nhiều ănten phát ănten thu Kỹ thuật mã hố khơng gian - thời gian cịn gọi kỹ thuật điều chế mã hoá hai chiều kỹ thuật tín hiệu mã hố kết hợp với điều chế phân tập không gian Kỹ thuật đánh giá kỹ thuật cung cấp tốc độ truyền dẫn cao đồng thời lại đảm bảo tính tin cậy cho đường truyền vơ tuyến Vì vậy, việc nghiên cứu, tìm hiểu kỹ thuật mã hóa khơng gian thời gian trở thành nhu cầu tất yếu người làm kỹ thuật viễn thơng chun ngành vơ tuyến Và tính cần thiết để người viết thực đề tài Mục đích đề tài Đề tài viết nhằm ba mục đích sau: Trình bày kiến thức hệ thống MIMO Trình bày đầy đủ nội dung kỹ thuật mã hóa khơng gian – thời gian là: mã khối không gian – thời gian (STBC) Đưa phần mềm mơ kết q trình mã hóa khơng gian thời gian hệ thống MIMO Phạm vi đề tài Trong khuôn khổ Đề tài Tốt nghiệp Đại học, với thời lượng thực vừa phải nội dung đề tài tập trung vào việc trình bày kỹ thuật mã hố mã hố khơng gian – thời gian là: mã khối khơng gian - thời gian (STBC) Chương trình mơ viết để mô kết việc sử dụng loại hình mã hố khơng gian - thời gian điều kiện điển hình Bố cục đề tài Toàn nội dung đề tài gồm phần chính: - Giới thiệu chung đề tài - Chương 1: Tổng quan hệ thống thông tin di động 3G+ - Chương 2: Công nghệ MIMO - Chương 3: Mã khối không gian – thời gian - Chương 4: Mô kết mô - Tổng kết [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc34(channel_model,fr_length,Num,no_tx_antennas,no_rx_antennas,modulati on) elseif N==3 & M==1 [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc31(channel_model,fr_length,Num,no_tx_antennas,no_rx_antennas,modulati on) elseif N==4 & M==4 [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc44(channel_model,fr_length,Num,no_tx_antennas,no_rx_antennas,modulati on) elseif N==4 & M==1 [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc41(channel_model,fr_length,Num,no_tx_antennas,no_rx_antennas,modulati on) elseif N==1 & M==4 [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc14(channel_model,fr_length,Num,no_tx_antennas,no_rx_antennas,modulati on) end case 'stbc_est' [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc22_est(channel_model,fr_length,Num,no_tx_antennas,no_rx_antennas,mod ulation) case 'stbc_cor' [FER FER_uncoded SER SER_uncoded BER BER_uncoded]=stbc22_cor(channel_model,fr_length,Num,alpha,no_tx_antennas,no_rx_antenna s,modulation) otherwise 'No coding' end clc; str1=cd; str2=sim_options.FileName; str3=[str1 '\' str2]; if sim_options.Savefile==1 save(str3); end %plot routines Choose FER/SER/BER as required figure; semilogy(EbNo,BER_uncoded,'r') hold on semilogy(EbNo,BER,'b') hold off xlabel('SNR [dB]') ylabel('BER') axis([min(EbNo) max(EbNo) 1e-6 1e0]) str1=num2str(N); str2=num2str(M); str=[str1 'x' str2]; legend('Uncoded',str); grid on str1='System:'; str2=num2str(N); str3=num2str(M); str4=[str1 str2 'x' str3]; title(str4); if channel_model=='AWGN ' model='AWGN'; else model='Rayleigh'; end str5=['Space-Time Block Coding-' model ' Channel']; set(gcf,'NumberTitle','off'); set(gcf,'Name',str5); grid on STBC 22 function [FER,FER_uncoded,SER,SER_uncoded, BER, BER_uncoded]=stbc22(channel_model,K,Num,no_tx_antennas,no_rx_antennas,modulation) %SNR upto 20 dBs EbNo=[0:2:20]; %N, M: number of transmit and receive antennas N=no_tx_antennas; M=no_rx_antennas; %initialize count idx = 1; h=waitbar(0,'Percentage Completed'); set(h,'Position',[230 60 275.25 56.25]); set(h,'name','Please wait '); wb=9.09; for SNR=EbNo sigma=0.5/(10^(SNR/10)); % Num -> number of packets for packet_count=1:Num % we are interested in transmitting 'K' SYMBOLS not bits Hence, K*2 for QPSK % etc switch (modulation) case 'BPSK ' data=randint(K,N); BIT=1; case 'QPSK ' data=randint(K*2,N); BIT=2; case '8PSK ' data=randint(K*3,N); BIT=3; case '16QAM' data=randint(K*4,N); BIT=4; otherwise disp('No Modulation') end tx_bits=data.'; temp=[]; temp1=[]; for i=1:N [temp1 s P]=tx_modulate(tx_bits(i,:),modulation); temp=[temp; temp1]; temp1=0; end %ready to transmit symbols of length 'K' X=temp.'; fr_length=length(X); % block coding-Alamouti x0=X(:,1);% required to verify a 1x1 system x1=X; x2(:,1)=-conj(X(:,2)); x2(:,2)=conj(X(:,1)); % form the channel matrix for n=1:N if channel_model=='AWGN ' Hr(n,:,:)=ones(fr_length,N); else Hr(n,:,:)=(randn(fr_length,N)+j*randn(fr_length,N))/sqrt(2); end end for n=1:M %transmission matrix H=reshape(Hr(n,:,:),fr_length,N); Habs(:,n)=sum(abs(H).^2,2); %received signal per receiver antenna r1(:,n)=sum(H.*x1,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r2(:,n)=sum(H.*x2,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); % demodulate the received signals z1(:,n)=r1(:,n).*conj(H(:,1))+conj(r2(:,n)).*H(:,2); z2(:,n)=r1(:,n).*conj(H(:,2))-conj(r2(:,n)).*H(:,1); end %uncoded(1,1) r01=H(:,1).*x0+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); %form estimates for m=1:P d01(:,m)=abs(r01-H(:,1)*s(m)).^2; % uncoded signal %coded signals d1(:,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d2(:,m)=abs(sum(z2,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; end % determine the minimum of estimates %decision for detecting uncoded [y0,i0]=min((d01),[],2); s0d=s(i0).'; clear d01 %decision for detecting s1 [y1,i1]=min(d1,[],2); s1d=s(i1).'; clear d1 %decision for detecting s2 [y2,i2]=min(d2,[],2); s2d=s(i2).'; clear d2 % form received symbols Xd=[s1d s2d]; %determine symbol errors error_un(packet_count)=sum(X(:,1)~=s0d);% for uncoded temp1=X>0; temp2=Xd>0; error(packet_count)=sum(sum(temp1~=temp2));% for coded end % end of FOR loop for "packet_count" %calculate FER, SER and BER for current idx %for uncoded signal SER_uncoded(idx)=sum(error_un)/(Num*K); BER_uncoded(idx)=SER_uncoded(idx)/BIT; FER_uncoded(idx)=SER_uncoded(idx)*K; %for coded signal SER(idx)=sum(error)/(Num*K); BER(idx)=SER(idx)/BIT; FER(idx)=SER(idx)*K; %increment idx idx=idx + 1; str_bar=[num2str(wb) '% Completed']; waitbar(wb/100,h,str_bar); wb=wb+9.09; end % end of FOR loop for SNR close(h); STBC 34 function [FER,FER_uncoded,SER,SER_uncoded, BER, BER_uncoded]=stbc34(channel_model,K,Num,no_tx_antennas,no_rx_antennas,modulation) %SNR upto 20 dBs EbNo=[0:2:20]; %N, M: number of transmit and receive antennas N=no_tx_antennas; M=no_rx_antennas; %initialize packet_count idx=1; h=waitbar(0,'Percentage Completed'); set(h,'Position',[230 60 275.25 56.25]); set(h,'name','Please wait '); wb=9.09; for SNR=EbNo sigma=0.5/(10^(SNR/10)); for packet_count=1:Num % we are interested in transmitting 'K' SYMBOLS not bits Hence, K*2 for QPSK % etc switch (modulation) case 'BPSK ' data=randint(K,4); BIT=1; case 'QPSK ' data=randint(K*2,4); BIT=2; case '8PSK ' data=randint(K*3,4); BIT=3; case '16QAM' data=randint(K*4,4); BIT=4; otherwise disp('No Modulation') end tx_bits=data.'; temp1=[]; temp=[]; for i=1:4 %N is actually 3, but we require tx antenna coding to be transmitted from antennas [temp1 s P]=tx_modulate(tx_bits(i,:),modulation); temp=[temp; temp1]; temp1=0; end %ready to transmit symbols of length 'K' X=temp.'; fr_length=length(X); %block signals in the lth time slot-Block coding for G3 STBC x0=X(:,1); x1=X(:,1:3); x2(:,1)=-X(:,2); x2(:,2)=X(:,1); x2(:,3)=-X(:,4); x3(:,1)=-X(:,3); x3(:,2)=X(:,4); x3(:,3)=X(:,1); x4(:,1)=-X(:,4); x4(:,2)=-X(:,3); x4(:,3)=X(:,2); x5=conj(x1); x6=conj(x2); x7=conj(x3); x8=conj(x4); % form the channel matrix for n=1:N if channel_model=='AWGN ' Hr(n,:,:)=ones(fr_length,N); else Hr(n,:,:)=(randn(fr_length,N)+j*randn(fr_length,N))/sqrt(2); end end for n=1:N %transmission matrix H=reshape(Hr(n,:,:),fr_length,N); Habs(:,n)=sum(abs(H).^2,2); %received signal per receiver antenna r1(:,n)=sum(H.*x1,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r2(:,n)=sum(H.*x2,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r3(:,n)=sum(H.*x3,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r4(:,n)=sum(H.*x4,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r5(:,n)=sum(H.*x5,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r6(:,n)=sum(H.*x6,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r7(:,n)=sum(H.*x7,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r8(:,n)=sum(H.*x8,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); % demodulate the received signals z1_1(:,n)=r1(:,n).*conj(H(:,1))+r2(:,n).*conj(H(:,2))+r3(:,n).*conj(H(:,3)); z1_2(:,n)=conj(r5(:,n)).*H(:,1)+conj(r6(:,n)).*H(:,2)+conj(r7(:,n)).*H(:,3); z1(:,n)=z1_1(:,n)+z1_2(:,n); z2_1(:,n)=r1(:,n).*conj(H(:,2))-r2(:,n).*conj(H(:,1))+r4(:,n).*conj(H(:,3)); z2_2(:,n)=conj(r5(:,n)).*H(:,2)-conj(r6(:,n)).*H(:,1)+conj(r8(:,n)).*H(:,3); z2(:,n)=z2_1(:,n)+z2_2(:,n); z3_1(:,n)=r1(:,n).*conj(H(:,3))-r3(:,n).*conj(H(:,1))-r4(:,n).*conj(H(:,2)); z3_2(:,n)=conj(r5(:,n)).*H(:,3)-conj(r7(:,n)).*H(:,1)-conj(r8(:,n)).*H(:,2); z3(:,n)=z3_1(:,n)+z3_2(:,n); z4_1(:,n)=-r2(:,n).*conj(H(:,3))+r3(:,n).*conj(H(:,2))-r4(:,n).*conj(H(:,1)); z4_2(:,n)=-conj(r6(:,n)).*H(:,3)+conj(r7(:,n)).*H(:,2)-conj(r8(:,n)).*H(:,1); z4(:,n)=z4_1(:,n)+z4_2(:,n); end %uncoded(1,1) r01=H(:,1).*x0+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); %form estimates for m=1:P d01(:,m)=abs(r01-H(:,1)*s(m)).^2; %uncoded signal %coded signals d1(:,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d2(:,m)=abs(sum(z2,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d3(:,m)=abs(sum(z3,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d4(:,m)=abs(sum(z4,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; end % determine the minimum of estimates %decision for detecting uncoded [y0,i0]=min((d01),[],2); s0d=s(i0).'; clear d01 %decision for detecting s1 [y1,i1]=min(d1,[],2); s1d=s(i1).'; clear d1 %decision for detecting s2 [y2,i2]=min(d2,[],2); s2d=s(i2).'; clear d2 %decision for detecting s3 [y3,i3]=min(d3,[],2); s3d=s(i3).'; clear d3 %decision for detecting s4 [y4,i4]=min(d4,[],2); s4d=s(i4).'; clear d4 % form received symbols Xd=[s1d s2d s3d s4d]; %determine symbol errors error_un(packet_count)=sum(X(:,1)~=s0d);% for uncoded temp1=X>0; temp2=Xd>0; error(packet_count)=sum(sum(temp1~=temp2));% for coded end% end of FOR loop for "packet_count" %calculate FER, SER and BER for current idx %for uncoded signal SER_uncoded(idx)=sum(error_un)/(Num*K); BER_uncoded(idx)=SER_uncoded(idx)/BIT; FER_uncoded(idx)=SER_uncoded(idx)*K; %for coded signal SER(idx)=sum(error)/(Num*K); BER(idx)=SER(idx)/BIT; FER(idx)=SER(idx)*K; %increment idx idx=idx + 1; str_bar=[num2str(wb) '% Completed']; waitbar(wb/100,h,str_bar); wb=wb+9.09; end% end of FOR loop for SNR close(h); STBC 44 function [FER,FER_uncoded,SER,SER_uncoded, BER, BER_uncoded]=stbc34(channel_model,K,Num,no_tx_antennas,no_rx_antennas,modulation) %SNR upto 20 dBs EbNo=[0:2:20]; %N, M: number of transmit and receive antennas N=no_tx_antennas; M=no_rx_antennas; %initialize packet_count idx=1; h=waitbar(0,'Percentage Completed'); set(h,'Position',[230 60 275.25 56.25]); set(h,'name','Please wait '); wb=9.09; for SNR=EbNo sigma=0.5/(10^(SNR/10)); for packet_count=1:Num % we are interested in transmitting 'K' SYMBOLS not bits Hence, K*2 for QPSK % etc switch (modulation) case 'BPSK ' data=randint(K,N); BIT=1; case 'QPSK ' data=randint(K*2,N); BIT=2; case '8PSK ' data=randint(K*3,N); BIT=3; case '16QAM' data=randint(K*4,N); BIT=4; otherwise disp('No Modulation') end tx_bits=data.'; temp1=[]; temp=[]; for i=1:N [temp1 s P]=tx_modulate(tx_bits(i,:),modulation); temp=[temp; temp1]; temp1=0; end %ready to transmit symbols of length 'K' X=temp.'; fr_length=length(X); %block signals in the lth time slot-Block coding for G4 STBC x0=X(:,1); x1=X(:,1:4); x2(:,1)=-X(:,2); x2(:,2)=X(:,1); x2(:,3)=-X(:,4);x2(:,4)=X(:,3); x3(:,1)=-X(:,3); x3(:,2)=X(:,4); x3(:,3)=X(:,1);x3(:,4)=-X(:,2); x4(:,1)=-X(:,4); x4(:,2)=-X(:,3); x4(:,3)=X(:,2);x4(:,4)=X(:,1); x5=conj(x1); x6=conj(x2); x7=conj(x3); x8=conj(x4); % form the channel matrix for n=1:N if channel_model=='AWGN ' Hr(n,:,:)=ones(fr_length,N); else Hr(n,:,:)=(randn(fr_length,N)+j*randn(fr_length,N))/sqrt(2); end end for n=1:N %transmission matrix H=reshape(Hr(n,:,:),fr_length,N); Habs(:,n)=sum(abs(H).^2,2); %received signal per receiver antenna r1(:,n)=sum(H.*x1,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r2(:,n)=sum(H.*x2,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r3(:,n)=sum(H.*x3,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r4(:,n)=sum(H.*x4,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r5(:,n)=sum(H.*x5,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r6(:,n)=sum(H.*x6,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r7(:,n)=sum(H.*x7,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); r8(:,n)=sum(H.*x8,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); % demodulate the received signals z1_1(:,n)=r1(:,n).*conj(H(:,1))+r2(:,n).*conj(H(:,2))+r3(:,n).*conj(H(:,3))+r4(:,n).*conj(H(:,4)); z1_2(:,n)=conj(r5(:,n)).*H(:,1)+conj(r6(:,n)).*H(:,2)+conj(r7(:,n)).*H(:,3)+conj(r8(:,n)).*H(:,4); z1(:,n)=z1_1(:,n)+z1_2(:,n); z2_1(:,n)=r1(:,n).*conj(H(:,2))-r2(:,n).*conj(H(:,1))-r3(:,n).*conj(H(:,4))+r4(:,n).*conj(H(:,3)); z2_2(:,n)=conj(r5(:,n)).*H(:,2)-conj(r6(:,n)).*H(:,1)-conj(r7(:,n)).*H(:,4)+conj(r8(:,n)).*H(:,3); z2(:,n)=z2_1(:,n)+z2_2(:,n); z3_1(:,n)=r1(:,n).*conj(H(:,3))+r2(:,n).*conj(H(:,4))-r3(:,n).*conj(H(:,1))-r4(:,n).*conj(H(:,2)); z3_2(:,n)=conj(r5(:,n)).*H(:,3)+conj(r6(:,n)).*H(:,4)-conj(r7(:,n)).*H(:,1)-conj(r8(:,n)).*H(:,2); z3(:,n)=z3_1(:,n)+z3_2(:,n); z4_1(:,n)=r1(:,n).*conj(H(:,4))-r2(:,n).*conj(H(:,3))+r3(:,n).*conj(H(:,2))-r4(:,n).*conj(H(:,1)); z4_2(:,n)=conj(r5(:,n)).*H(:,4)-conj(r6(:,n)).*H(:,3)+conj(r7(:,n)).*H(:,2)-conj(r8(:,n)).*H(:,1); z4(:,n)=z4_1(:,n)+z4_2(:,n); end %uncoded(1,1) r01=H(:,1).*x0+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1)); %form estimates for m=1:P d01(:,m)=abs(r01-H(:,1)*s(m)).^2; %uncoded signal %coded signals d1(:,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d2(:,m)=abs(sum(z2,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d3(:,m)=abs(sum(z3,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; d4(:,m)=abs(sum(z4,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2; end % determine the minimum of estimates %decision for detecting uncoded [y0,i0]=min((d01),[],2); s0d=s(i0).'; clear d01 %decision for detecting s1 [y1,i1]=min(d1,[],2); s1d=s(i1).'; clear d1 %decision for detecting s2 [y2,i2]=min(d2,[],2); s2d=s(i2).'; clear d2 %decision for detecting s3 [y3,i3]=min(d3,[],2); s3d=s(i3).'; clear d3 %decision for detecting s4 [y4,i4]=min(d4,[],2); s4d=s(i4).'; clear d4 % form received symbols Xd=[s1d s2d s3d s4d]; %determine symbol errors error_un(packet_count)=sum(X(:,1)~=s0d);% for uncoded temp1=X>0; temp2=Xd>0; error(packet_count)=sum(sum(temp1~=temp2));% for coded end% end of FOR loop for "packet_count" %calculate FER, SER and BER for current idx %for uncoded signal SER_uncoded(idx)=sum(error_un)/(Num*K); BER_uncoded(idx)=SER_uncoded(idx)/BIT; FER_uncoded(idx)=SER_uncoded(idx)*K; %for coded signal SER(idx)=sum(error)/(Num*K); BER(idx)=SER(idx)/BIT; FER(idx)=SER(idx)*K; %increment idx idx=idx + 1; str_bar=[num2str(wb) '% Completed']; waitbar(wb/100,h,str_bar); wb=wb+9.09; end% end of FOR loop for SNR close(h); UI_CHECK_PARAMS function ui_check_params persistent state; if isempty(state) state = struct('FrmLen', '130', 'NumofPkt', '100','corr_value','0'); end curr_obj = gcbo; obj_tag = get(curr_obj,'Tag'); % performs logical check on input parameters switch (obj_tag) case 'FrmLen' Frm_len_str = get(curr_obj,'String'); try Frm_len = eval(Frm_len_str); if Frm_len