| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  请教大神,为什么会出现未定义函数或变量 'Parameter_Classical',感谢! " s+ l1 \; A" \& a1 M
 clearall; closeall; carrier_count=1024;%子载波数 IFFT_length=1024;%FFT点数 N=2000;%信源0,1序列长度 %产生瑞利信道衰落 T=1; T_interval=0.01; N1=64; N2=64; fmax=1000; H=ceil(T/T_interval); t=(0:H-1)*T_interval; Variance1=1; [f1,c1,theta1]=Parameter_Classical(N1,Variance1,fmax,'rand'); [f2,c2,theta2]=Parameter_Classical(N2,Variance1,fmax,'rand'); c1=c1/sqrt(2); c2=c2/sqrt(2); reyleigh_t=Gauss_generator(c1,f1,theta1,T_interval,T)+j*(Gauss_generator(c2,f2,theta2,T_interval,T)); DATA_R_IFFT_length=zeros(1,IFFT_length); for  SNR=0:3:15            for n_H=1:1:H                 r_h=reyleigh_t(1,n_H); % 取一个信道样点,共H=5000个点         % 信号产生2000bit随机0,1序列              data=zeros(1,N/2); %产生1*1000的零矩阵;              message=randint(1,N); %产生2000bit随机0,1序列             reshape_message=reshape(message,N/2,2); %串并转换,变为1000*2的矩阵              for  n=1:1:N/2    %星座映射                     ifreshape_message(n, ==[1,1]                        data(1,n)=sqrt(2)/2+j*sqrt(2)/2;                          end                     ifreshape_message(n, ==[1,0]                         data(1,n)=sqrt(2)/2-j*sqrt(2)/2;                     end                     ifreshape_message(n, ==[0,1]                        data(1,n)=-sqrt(2)/2+j*sqrt(2)/2;                     end                     ifreshape_message(n,:)==[0,0]                     data(1,n)=-sqrt(2)/2-j*sqrt(2)/2;                     end              end %产生待IFFT变换的数据,1*1024矩阵,中间置0,两头添0             DATA_T=[0 0 0 0 0 0 0 0 0 0 0[data(1:500) 0 data(501:1000)] 0 0 0 0 0 0 0 0 0 0 0 0];                DATA_ifft=ifft(DATA_T,1024);%进行1024点的ifft变换                Recieve1=r_h.*DATA_ifft; %过信道             r = awgn(Recieve1,SNR,'measured');%加噪声             Recieve_h=r/r_h; % 去信道Recieve.             Recieve_fft=fft(Recieve_h,1024); % 接受的1*1024矩阵进行fft变换             for     n_R=1:1:1024    % fft变换后判断每一点在星座图的位置                 x=real(Recieve_fft(1,n_R));                 y=imag(Recieve_fft(1,n_R));                d_1=sqrt((x-sqrt(2)/2)^2+(y-sqrt(2)/2)^2);                d_2=sqrt((x+sqrt(2)/2)^2+(y-sqrt(2)/2)^2);                 d_3=sqrt((x+sqrt(2)/2)^2+(y+sqrt(2)/2)^2);                d_4=sqrt((x-sqrt(2)/2)^2+(y+sqrt(2)/2)^2);                 D=[d_1 d_2 d_3 d_4];                 d_min=min(D);     %以最小距离为基准判断                 if      d_min==d_1                         DATA_R_IFFT_length(n_R)=sqrt(2)/2+j*sqrt(2)/2;                 elseif  d_min==d_2                        DATA_R_IFFT_length(n_R)=-sqrt(2)/2+j*sqrt(2)/2;                 elseif  d_min==d_3                        DATA_R_IFFT_length(n_R)=-sqrt(2)/2-j*sqrt(2)/2;                 elseif d_min==d_4                        DATA_R_IFFT_length(n_R)=sqrt(2)/2-j*sqrt(2)/2;                 end             end             DATA_R=[DATA_R_IFFT_length(12:511)DATA_R_IFFT_length(513:1012)];                        data_r=zeros(N/2,2);             for k=1:1:N/2   %用星座图点变回0,1序列                 if  DATA_R(1,k)==sqrt(2)/2+j*sqrt(2)/2                     data_r(k,:)=[1 1];                 elseifDATA_R(1,k)==sqrt(2)/2-j*sqrt(2)/2                     data_r(k,:)=[1 0];                elseif DATA_R(1,k)==-sqrt(2)/2+j*sqrt(2)/2                     data_r(k,:)=[0 1];                 elseifDATA_R(1,k)==-sqrt(2)/2-j*sqrt(2)/2                     data_r(k,:)=[0 0];                 end             end             message_r=reshape(data_r,1,N);             bit_errors=find(message~=message_r);            bit_errors_count=size(bit_errors,2);             ber=bit_errors_count/2000;             ber_total(1,n_H)=ber;         end         ber_avg=mean(ber_total); semilogy(SNR,ber_avg,'--rs','LineWidth',2,'MarkerEdgeColor','k','MarkeRF aceColor','g','MarkerSize',10);            title('BER曲线');         xlabel('SNR');         ylabel('BER');         hold on;         grid on; end . S7 O  E) u, M' X! F0 }! M) [6 C
 |