EDA365电子论坛网
标题: 请教大神,为什么会出现未定义函数或变量 'Parameter_Classical',感谢! [打印本页]
作者: canpcbpp 时间: 2021-1-14 18:30
标题: 请教大神,为什么会出现未定义函数或变量 'Parameter_Classical',感谢!
请教大神,为什么会出现未定义函数或变量 'Parameter_Classical',感谢!
. C, T( @ S# G& ?4 e
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','MarkerFaceColor','g','MarkerSize',10);
title('BER曲线');
xlabel('SNR');
ylabel('BER');
hold on;
grid on;
end
; ]) n& j, N& y" G* [, ^/ N' J
作者: KIObole 时间: 2021-1-14 19:20
经常有识别不出的
作者: yxlk 时间: 2021-1-15 09:54
因为你没有定义这个函数啊
- B# R8 {: P! d1 u' @9 {matlab当前路径下有这个函数吗?
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |