UF-OFDM以及OFDM 传输过程及功率谱密度的仿真

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

fs = 15000; %采样频率

dop_fs = 500; %多普勒频移(Hz)

numFFT = 512; % FFT点数

subbandSize = 20; % 子带长度

numSubbands = 10; % 子载波 numSubbands*subbandSize <= numFFT

subbandOffset = 156; % 频带中心 numFFT/2-subbandSize*numSubbands/2

% 切比雪夫窗

filterLen = 43; % 滤波器长

slobeAtten = 40; % 旁瓣衰减(dB)

bitsPerSubCarrier = 4; % 2代表4QAM, 4代表16QAM, 6代表64QAM, 8代表256QAM

snrdB = 15; % SNR(dB)

% 设计滤波器(切比雪夫)

prototypeFilter = chebwin(filterLen, slobeAtten);

% QAM调制器

%ModulationOrder星座图中点数,默认为16 BitInput输入,true – bit ,false – int

qamMapper = comm.RectangularQAMModulator(‘ModulationOrder’, 2^bitsPerSubCarrier, ‘BitInput’, true , ‘NormalizationMethod’, ‘Average power’);

txSig = complex(zeros(numFFT+filterLen-1, 1));

%%%%%%%%%%%%%%%

%-------------%

% 发送接收模块 %

%-------------%

%%%%%%%%%%%%%%%

% 初始化数组

inpData = zeros(bitsPerSubCarriersubbandSize, numSubbands);%8010,10个子带,每个子带80个数据,每一列是一个子带

figure;

axis([-0.5 0.5 -100 20]);

hold on;

grid on

xlabel(‘归一化频率’);

ylabel(‘功率谱密度(dBW/Hz)’)

title([‘UFMC, ’ num2str(numSubbands) ’ Subbands, ’ num2str(subbandSize) ’ Subcarriers each’])

% 通用滤波多载波调制

for bandIdx = 1:numSubbands

%生成m*n矩阵

bitsIn = randi([0 1], bitsPerSubCarrier*subbandSize, 1);

%阶跃响应,inpData(:, bandIdx)取第bandIdx列

symbolsIn = step(qamMapper,inpData(:, bandIdx));

inpData(:,bandIdx) = bitsIn; % log bits for comparison

%加高斯白噪声,SNR=10

%symbolsIn = awgn(symbolsIn,10);

chan=rayleighchan(1/fs,500);

symbolsIn = filter(chan,symbolsIn);%经过信道后的输出

% 将子带数据打包到ofdm符号中

%计算偏移

offset = subbandOffset+(bandIdx-1)*subbandSize;

%输入信号[0 0 0 … symbolsIn … 0 0 0]

symbolsInOFDM1 = [zeros(offset,1); symbolsIn; zeros(numFFT-offset-subbandSize, 1)];

%ifft结果

ifftOut = ifft(ifftshift(symbolsInOFDM1));

% 频移滤波器(对齐中心频率)

bandFilter = prototypeFilter.exp( 1i2pi(0:filterLen-1)'/numFFT*((bandIdx-1/2)*subbandSize+0.5+subbandOffset+numFFT/2) );

filterOut = conv(bandFilter,ifftOut);

% 画功率谱密度

% periodogram[x,window,nfft,fs]求功率谱密度,2-N点FFT

[psd,f] = periodogram(filterOut, rectwin(length(filterOut)), numFFT*2, 1, ‘centered’);

plot(f,10*log10(psd),‘Color’,[rand(1,1) rand(1,1) rand(1,1)]);

txSig = txSig + filterOut;

end

figure

plot(inpData);

axis([0 40 -0.1 1.1]);

title(‘发送信号’)

hold off;

% 具有相应参数的ofdm调制

figure;

for bandIdx = 1:numSubbands

symbolsIn = step(qamMapper,inpData(:, bandIdx));

symbolsIn = filter(chan,symbolsIn);%经过信道后的输出

offset = subbandOffset;

symbolsInOFDM2 = [zeros(offset, 1); symbolsIn; zeros(numFFT-offset-subbandSize*numSubbands, 1)];

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

image
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

[外链图片转存中…(img-TwecauxB-1714681801894)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值