猿问

程序如下:为什么在MATLAB中 Missing variable or function.

function [ output_args ] = Untitled1( input_args )
%UNTITLED1 Summary of this function goes here
% Detailed explanation goes here
%数据调制采用QPSK
clear;clc;

Signal=rand(1,para*Ns*2)>0.5;
%产生0,1随机数列,符号个数为para*2*Ns(子信道个数×调制水平×每个子信道中有用符号个数)
for i=1:para
for j=1:Ns*2
SigPara(i,j)=Signal(i*j);
%串并转换,将随机产生的二进制矩阵变换为行数为para,列数为2*Ns的矩阵
end
end
%进行QPSK数据调制,将数据分为两个通道
for j=1:Ns
ich(:,j)=SigPara(:,2*j-1);
qch(:,j)=SigPara(:,2*j);
end
kmod=1./sqrt(2);
ich1=ich.*kmod;
qch1=qch.*kmod;
x=ich1+qch1.*sqrt(-1); %
y=ifft(x); % 
ich2=real(y); %
qch2=imag(y); %
%插入保护间隔
ich3=[ich2(fl-gl+1:fl,:);ich2];
qch3=[qch2(fl-gl+1:fl,:);qch2];
%并串转换
ich4=reshape(ich3,1,(fl+gl)*Ns);
qch4=reshape(qch3,1,(fl+gl)*Ns);
%形成复数发射数据
TrData=ich4+qch4.*sqrt(-1);
%接收机
%加入高斯白噪声
ReData=awgn(TrData,SNR,'measured');
%接收端
%移去保护时隙
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fl+gl,Ns);
qdata1=reshape(idata,fl+gl,Ns);
idata2=idata1(gl+1:gl+fl,:);
qdata2=qdata1(gl+1:gl+fl,:);
%FFT
Rex=idata2+qdata2*sqrt(-1);
ry=fft(Rex);
ReIChan=real(ry);
ReQChan=imag(ry);
ReIChan=ReIChan/kmod;
ReQChan=ReQChan/kmod;
%QPSK逆映射
for j=1:Ns
RePara(:,2*j-1)=ReICh7an(:,j);
RePara(:,2*j)=ReQChan(:,j);
end
ReSig=reshape(RePara,1,para*Ns*2);
%符号抽样判决
ReSig=ReSig>0.5;
figure(2)
subplot(211),stem(ReSig(1:20)),grid;subplot(212),stem(Signal(1:20)),grid
%End of script file.

阿晨1998
浏览 151回答 1
1回答

慕的地10843

function [ output_args ] = Untitled1( input_args )%UNTITLED1 Summary of this function goes here% Detailed explanation goes here%数据调制采用QPSKclear;clc; %clc是清除当前command区域的命令,表示清空,看着舒服些 。而clear用于清空环境变量SNR=10; % 信噪比Nfft=128; % 设置FFT长度Ns=6; %设置一个祯结构中OFDM信号的个数para=128;%设置并行传输的子载波个数sr=250000; %符号速率br=sr.*2;% 每个子载波的比特率gl=32; %保护时隙的长度Signal=rand(1,para*Ns*2)>0.5;%产生0,1 随即序列,符号数为para*Ns*2%(子信道个数×调制水平×每个子信道中有用符号个数)for i=1:parafor j=1:Ns*2SigPara(i,j)=Signal(i*j);%串并变换%将随机产生的二进制矩阵变换为行数为para,列数为2*Ns的矩阵endend%QPSK调制,将数据分为两个通道for j=1:Nsich(:,j)=SigPara(:,2*j-1);qch(:,j)=SigPara(:,2*j);endkmod=1./sqrt(2);ich1=ich.*kmod;qch1=qch.*kmod;x=ich1+qch1.*sqrt(-1); %频域数据变时域y=ifft(x);ich2=real(y);qch2=imag(y);%插入保护间隔ich3=[ich2(Nfft-gl+1:Nfft,:);ich2];qch3=[qch2(Nfft-gl+1:Nfft,:);qch2];%并串变换ich4=reshape(ich3,1,(Nfft+gl)*Ns);qch4=reshape(qch3,1,(Nfft+gl)*Ns);%形成复数发射数据TrData=ich4+qch4.*sqrt(-1);%接收机%加入高斯白噪声ReData=awgn(TrData,SNR,'measured');%接收端%移去保护间隔idata=real(ReData);qdata=imag(ReData);idata1=reshape(idata,Nfft+gl,Ns);qdata1=reshape(qdata,Nfft+gl,Ns);idata2=idata1(gl+1:gl+Nfft,:);  qdata2=qdata1(gl+1:gl+Nfft,:);  %FFTRex=idata2+qdata2*sqrt(-1);ry=fft(Rex);ReIChan=real(ry);ReQChan=imag(ry);ReIchan=ReIChan/kmod;ReQchan=ReQChan/kmod;%QPSK逆映射for j=1:NsRePara(:,2*j-1)=ReIChan(:,j);RePara(:,2*j)=ReQChan(:,j);endReSig=reshape(RePara,1,para*Ns*2);%符号抽样判决ReSig=ReSig>0.5;figure(1);subplot(2,1,1),stem(ReSig(1:20)),grid minor;title('resignal');xlabel('x'),ylabel('y');subplot(2,1,2),stem(Signal(1:20)),grid;title('signal');你的程序缺好多参数,已补全~ 
随时随地看视频慕课网APP

相关分类

Node.js
我要回答