papr_eight3dinsert(m_2d,m_3d,num_subcarrier)
时间: 2023-12-03 11:00:42 浏览: 18
`papr_eight3dinsert(m_2d, m_3d, num_subcarrier)` 是一个函数,用于将2D的信号转换为3D的信号。函数的输入参数为`m_2d`(2D的信号矩阵)、`m_3d`(输出的3D信号矩阵)和`num_subcarrier`(子信道的数量)。
函数的功能是通过将原始的2D信号分割成多个子信道,然后在垂直方向上复制这些子信道,以形成3D信号。具体的步骤如下:
1. 首先,获取2D信号矩阵的行数和列数,并计算出每个子信道的行数。
2. 在`m_3d`中创建一个新的矩阵,行数为`num_subcarrier`,列数与2D信号的列数相同。
3. 使用循环遍历子信道的数量,并进行以下操作:
- 在`m_3d`中选择第`i`个子信道,并将其与`m_2d`中的对应的子信道复制。
- 复制完成后,就可以在垂直方向上形成3D信号的主体部分。
4. 最后,返回经过转换的3D信号矩阵`m_3d`。
这个函数的作用在于将2D信号转换为3D信号,使得信号可以在不同的维度上进行处理和分析。这在一些通信和图像处理应用中,能够更好地利用信号的空间相关性,提高信号处理的效果。
相关问题
将下面的代码中的QPSK调制改为16QAM调制 : function PAPR_QPSK_Clipping Num_Loop=30000; Num_Subcarrier=64; Mapper=[ 1+1i -1+1i 1-1i -1-1i]/sqrt(2);%QPSK %Mapper=[-3+3j,-1+3j,1+3j,3+3j,... % -3+1j,-1+1j,1+1j,3+1j,... % -3-1j,-1-1j,1-1j,3-1j,... % -3-3j,-1-3j,1-3j,3-3j];%16QAM % J=5;%Oversampling factor CR=4;%Clipping Ratio PAPR_Original=zeros(1,Num_Loop); PAPR_Clipping=zeros(1,Num_Loop); for n=1:Num_Loop InputSymbolIndex=randi([1 4],1,Num_Subcarrier); OFDM_Freq=Mapper(InputSymbolIndex); OFDM_Time=sqrt(J*Num_Subcarrier)*ifft([OFDM_Freq(1:Num_Subcarrier/2) zeros(1,(J-1)*Num_Subcarrier) OFDM_Freq(Num_Subcarrier/2+1:Num_Subcarrier)]); PAPR_Original(n)=10*log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).*2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Clipping Method for p=1:J*Num_Subcarrier if abs(OFDM_Time(p))>CR OFDM_Time(p)= CR*cos(angle(OFDM_Time(p)))+1i*CR*sin(angle(OFDM_Time(p))); end end PAPR_Clipping(n)=10*log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).^2)); end Pr_Ori=[]; Pr_Clip=[]; PAPRO_Start=2; PAPRO_End=12; step=0.2; count=1; for m=PAPRO_Start:step:PAPRO_End temp_Ori=sum(PAPR_Original(:)>m)/Num_Loop; temp_Clip=sum(PAPR_Clipping(:)>m)/Num_Loop; Pr_Ori(count)=temp_Ori; Pr_Clip(count)=temp_Clip; count=count+1; end semilogy(PAPRO_Start:step:PAPRO_End,Pr_Ori,' -b*',PAPRO_Start:step:PAPRO_End,Pr_Clip,'-r*'); axis([PAPRO_Start PAPRO_End 10^-4 1]); grid on; hold on;
function PAPR_16QAM_Clipping
Num_Loop=30000;
Num_Subcarrier=64;
Mapper=[-3+3j,-1+3j,1+3j,3+3j,...
-3+1j,-1+1j,1+1j,3+1j,...
-3-1j,-1-1j,1-1j,3-1j,...
-3-3j,-1-3j,1-3j,3-3j];%16QAM
J=5;%Oversampling factor
CR=4;%Clipping Ratio
PAPR_Original=zeros(1,Num_Loop);
PAPR_Clipping=zeros(1,Num_Loop);
for n=1:Num_Loop
InputSymbolIndex=randi([1 16],1,Num_Subcarrier);
OFDM_Freq=Mapper(InputSymbolIndex);
OFDM_Time=sqrt(J*Num_Subcarrier)*ifft([OFDM_Freq(1:Num_Subcarrier/2) zeros(1,(J-1)*Num_Subcarrier) OFDM_Freq(Num_Subcarrier/2+1:Num_Subcarrier)]);
PAPR_Original(n)=10*log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).*2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Clipping Method
for p=1:J*Num_Subcarrier
if abs(OFDM_Time(p))>CR
OFDM_Time(p)= CR*cos(angle(OFDM_Time(p)))+1i*CR*sin(angle(OFDM_Time(p)));
end
end
PAPR_Clipping(n)=10*log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).^2));
end
Pr_Ori=[];
Pr_Clip=[];
PAPRO_Start=2;
PAPRO_End=12;
step=0.2;
count=1;
for m=PAPRO_Start:step:PAPRO_End
temp_Ori=sum(PAPR_Original(:)>m)/Num_Loop;
temp_Clip=sum(PAPR_Clipping(:)>m)/Num_Loop;
Pr_Ori(count)=temp_Ori;
Pr_Clip(count)=temp_Clip;
count=count+1;
end
semilogy(PAPRO_Start:step:PAPRO_End,Pr_Ori,' -b*',PAPRO_Start:step:PAPRO_End,Pr_Clip,'-r*');
axis([PAPRO_Start PAPRO_End 10^-4 1]);
grid on;
hold on;
end
将下面的代码中的QPSK调制改为8QPSK调制 : function PAPR_QPSK_Clipping Num_Loop=30000; Num_Subcarrier=64; Mapper=[ 1+1i -1+1i 1-1i -1-1i]/sqrt(2);%QPSK %Mapper=[-3+3j,-1+3j,1+3j,3+3j,... % -3+1j,-1+1j,1+1j,3+1j,... % -3-1j,-1-1j,1-1j,3-1j,... % -3-3j,-1-3j,1-3j,3-3j];%16QAM % J=5;%Oversampling factor CR=4;%Clipping Ratio PAPR_Original=zeros(1,Num_Loop); PAPR_Clipping=zeros(1,Num_Loop); for n=1:Num_Loop InputSymbolIndex=randi([1 4],1,Num_Subcarrier); OFDM_Freq=Mapper(InputSymbolIndex); OFDM_Time=sqrt(JNum_Subcarrier)ifft([OFDM_Freq(1:Num_Subcarrier/2) zeros(1,(J-1)Num_Subcarrier) OFDM_Freq(Num_Subcarrier/2+1:Num_Subcarrier)]); PAPR_Original(n)=10log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Clipping Method for p=1:JNum_Subcarrier if abs(OFDM_Time(p))>CR OFDM_Time(p)= CRcos(angle(OFDM_Time(p)))+1iCRsin(angle(OFDM_Time(p))); end end PAPR_Clipping(n)=10log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).^2)); end Pr_Ori=[]; Pr_Clip=[]; PAPRO_Start=2; PAPRO_End=12; step=0.2; count=1; for m=PAPRO_Start:step:PAPRO_End temp_Ori=sum(PAPR_Original(:)>m)/Num_Loop; temp_Clip=sum(PAPR_Clipping(:)>m)/Num_Loop; Pr_Ori(count)=temp_Ori; Pr_Clip(count)=temp_Clip; count=count+1; end semilogy(PAPRO_Start:step:PAPRO_End,Pr_Ori,' -b*',PAPRO_Start:step:PAPRO_End,Pr_Clip,'-r*'); axis([PAPRO_Start PAPRO_End 10^-4 1]); grid on; hold on;
function PAPR_8QPSK_Clipping
Num_Loop=30000;
Num_Subcarrier=64;
Mapper=[-1/sqrt(2)-1/sqrt(2)*1i -1/sqrt(2)+1/sqrt(2)*1i 1/sqrt(2)-1/sqrt(2)*1i 1/sqrt(2)+1/sqrt(2)*1i -1/sqrt(2)-1/sqrt(2)*1i 1/sqrt(2)-1/sqrt(2)*1i -1/sqrt(2)+1/sqrt(2)*1i 1/sqrt(2)+1/sqrt(2)*1i]/sqrt(2); % 8QPSK
J=5;%Oversampling factor
CR=4;%Clipping Ratio
PAPR_Original=zeros(1,Num_Loop);
PAPR_Clipping=zeros(1,Num_Loop);
for n=1:Num_Loop
InputSymbolIndex=randi([1 8],1,Num_Subcarrier);
OFDM_Freq=Mapper(InputSymbolIndex);
OFDM_Time=sqrt(J*Num_Subcarrier)*ifft([OFDM_Freq(1:Num_Subcarrier/2) zeros(1,(J-1)*Num_Subcarrier) OFDM_Freq(Num_Subcarrier/2+1:Num_Subcarrier)]);
PAPR_Original(n)=10*log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).^2));
% Clipping Method
for p=1:J*Num_Subcarrier
if abs(OFDM_Time(p))>CR
angle_OFDM_Time = angle(OFDM_Time(p));
if angle_OFDM_Time > -pi/8 && angle_OFDM_Time <= pi/8
OFDM_Time(p) = CR/sqrt(2) + 1i*CR/sqrt(2);
elseif angle_OFDM_Time > pi/8 && angle_OFDM_Time <= 3*pi/8
OFDM_Time(p) = 1/sqrt(2) + 1i*CR;
elseif angle_OFDM_Time > 3*pi/8 && angle_OFDM_Time <= 5*pi/8
OFDM_Time(p) = -CR/sqrt(2) + 1i*CR/sqrt(2);
elseif angle_OFDM_Time > 5*pi/8 && angle_OFDM_Time <= 7*pi/8
OFDM_Time(p) = -1/sqrt(2) + 1i*CR;
elseif angle_OFDM_Time > 7*pi/8 || angle_OFDM_Time <= -7*pi/8
OFDM_Time(p) = -CR/sqrt(2) - 1i*CR/sqrt(2);
elseif angle_OFDM_Time > -7*pi/8 && angle_OFDM_Time <= -5*pi/8
OFDM_Time(p) = -1/sqrt(2) - 1i*CR;
elseif angle_OFDM_Time > -5*pi/8 && angle_OFDM_Time <= -3*pi/8
OFDM_Time(p) = CR/sqrt(2) - 1i*CR/sqrt(2);
elseif angle_OFDM_Time > -3*pi/8 && angle_OFDM_Time <= -pi/8
OFDM_Time(p) = 1/sqrt(2) - 1i*CR;
end
end
end
PAPR_Clipping(n)=10*log10(max(abs(OFDM_Time)).^2./mean(abs(OFDM_Time).^2));
end
Pr_Ori=[];
Pr_Clip=[];
PAPRO_Start=2;
PAPRO_End=12;
step=0.2;
count=1;
for m=PAPRO_Start:step:PAPRO_End
temp_Ori=sum(PAPR_Original(:)>m)/Num_Loop;
temp_Clip=sum(PAPR_Clipping(:)>m)/Num_Loop;
Pr_Ori(count)=temp_Ori;
Pr_Clip(count)=temp_Clip;
count=count+1;
end
semilogy(PAPRO_Start:step:PAPRO_End,Pr_Ori,' -b*',PAPRO_Start:step:PAPRO_End,Pr_Clip,'-r*');
axis([PAPRO_Start PAPRO_End 10^-4 1]);
grid on;
hold on;