当前位置:编程学习 > Matlab >>

求高手解释一个matlab程序!!

clear all; clc; close all; K = 128; N = 8; QPSK_Set = [1 -1 j -j]; Phase_Set = [1 -1]; MAX_SYMBOLS = 1e4;%信号越大,PAPR越高 PAPR_Orignal = zeros(1,MAX_SYMBOLS);%一行,10000列 PAPR_SLM = zeros(3,MAX_SYMBOLS);%三行,10000列 X = zeros(N,K); Index = zeros(N,K); for nSymbol=1:MAX_SYMBOLS Index(1,:) = randint(1,K,length(QPSK_Set))+1;%一行,128列。数的取值为1~4 Index矩阵的第一行。 randint(1,K,length(QPSK_Set))为一行,K列。取值为0,1,2,3,因为length(QPSK_Set)的值为4。 Index(2:N,:) = randint(N-1,K,length(Phase_Set))+1;%Index矩阵的第二行到第N行 X(1,:) = QPSK_Set(Index(1,:)); X(2:N,:) = repmat(X(1,:),N-1,1).*Phase_Rot; % Phase roated Frequency domain signal 相位旋转频域信号 repmat(A,m,n)将矩阵A复制m*n块。 x = ifft(X,[],2); % Time domain signal 时域信号 Signal_Power = abs(x.^2); Peak_Power = max(Signal_Power,[],2); Mean_Power = mean(Signal_Power,2); PAPR_temp = 10*log10(Peak_Power./Mean_Power); PAPR_Orignal(nSymbol) = PAPR_temp(1); PAPR_SLM(1,nSymbol) = min(PAPR_temp(1:2));%1~2 PAPR_SLM(2,nSymbol) = min(PAPR_temp(1:4));%1~4 PAPR_SLM(3,nSymbol) = min(PAPR_temp(1:8));%1~8 end 只有一个问题: for循环里面,MAX_SYMBOLS的变化究竟怎么影响的PAPR_temp = 10*log10(Peak_Power./Mean_Power)的变化?我试了一下,不同的MAX_SYMBOLS取值,导致 PAPR_temp = 10*log10(Peak_Power./Mean_Power)的值不同,进而使得 PAPR_SLM(1,nSymbol)的值不同,但我不知道是怎么影响的,求解释!
答案:从你发现有问题的地方一步步的往上推,肯定是 Signal_Power发生变化了,所以x肯定变了,。。。。最后发现是Index的值变了……
randint函数的功能是Generate matrix of uniformly distributed random integers,因此每次循环的结果都不一样的。

上一个:在matlab里怎么画x*y^2/(x^2 y^4)
下一个:用matlab求积分出现dilog这个函数。?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,