?? code_r_papr.m
字號:
%***************************************************
% 編碼方法PARP抑制算法的編碼效率仿真
% 載波數 N = 4, 8, 16, 32
% M 過采樣因子
% papr 每符號內峰均功率比
%---------------------------------------------------
echo off all;
clc; clear
t = cputime;
M = 4;
x = 0:0.001:1;
papr1 = zeros(1,length(x)); %保存N=4時的PAPR排序值
papr2 = zeros(1,length(x)); %保存N=8時的PAPR排序值
papr3 = zeros(1,length(x)); %保存N=16時的PAPR排序值
%-計算4子載波----------------------
N = 4;
pt = zeros(1,(2^N)*N*M); papr = zeros(1,2^N);
for i = 0:(2^N-1) %對每個符號循環
symbol = dec2bin(i,N);
temp = zeros(1,N*M);
for j = 1:N %對符號的每一位循環
temp(j) = sign(str2num(symbol(N-j+1))-0.5); %字符串尾為最低位
end
temp = abs(ifft(temp)).^2
pt(i*N*M+1:(i+1)*N*M) = temp; %計算包絡功率
papr(i+1) = 10*log10(max(temp)/mean(temp)); %計算PAPR
end
temppapr1 = sort(papr);
%-計算8子載波-----------------------
N = 8;
pt = zeros(1,(2^N)*N*M); papr = zeros(1,2^N);
for i = 0:(2^N-1) %對每個符號循環
symbol = dec2bin(i,N);
temp = zeros(1,N*M);
for j = 1:N %對符號的每一位循環
temp(j) = sign(str2num(symbol(N-j+1))-0.5); %字符串尾為最低位
end
temp = abs(ifft(temp)).^2
pt(i*N*M+1:(i+1)*N*M) = temp; %計算包絡功率
papr(i+1) = 10*log10(max(temp)/mean(temp)); %計算PAPR
end
temppapr2 = sort(papr);
%-計算16子載波-----------------------
N = 16;
pt = zeros(1,(2^N)*N*M); papr = zeros(1,2^N);
for i = 0:(2^N-1) %對每個符號循環
symbol = dec2bin(i,N);
temp = zeros(1,N*M);
for j = 1:N %對符號的每一位循環
temp(j) = sign(str2num(symbol(N-j+1))-0.5); %字符串尾為最低位
end
temp = abs(ifft(temp)).^2
pt(i*N*M+1:(i+1)*N*M) = temp; %計算包絡功率
papr(i+1) = 10*log10(max(temp)/mean(temp)); %計算PAPR
end
temppapr3 = sort(papr);
for i=1:length(x)
j = round(x(i)*(2^4)); if (j >= 1) papr1(i)=temppapr1(j); end
j = round(x(i)*(2^8)); if (j >= 1) papr2(i)=temppapr2(j); end
j = round(x(i)*(2^16)); if (j >= 1) papr3(i)=temppapr3(j); end
end
figure(1);
plot(x,papr1);grid;xlabel('編碼效率R');ylabel('峰平功率比(dB)');hold on;
plot(x,papr2,'r');hold on;
plot(x,papr3,'g');hold off;
legend('N=4','N=8','N=16');
e = cputime -t;
echo on all;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -