问个Matlab的程序问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:52:32
clear all; clc; close all;
K = 128;
IF = 2;
N = K*IF;
CR = 4;
QPSK_Set = [1 -1 j -j];
ITERATE_NUM = 4;
MAX_SYMBOLS = 1e4;
PAPR_Orignal = zeros(1,MAX_SYMBOLS);
PAPR_RCF = zeros(ITERATE_NUM,MAX_SYMBOLS)
for nSymbol=1:MAX_SYMBOLS
Index = randint(1,K,length(QPSK_Set))+1;
X = QPSK_Set(IndeX(1,:));
XX = [X(1:K/2) zeros(1,N-K) X(K/2+1:K)];

前面的还行,到了 X = QPSK_Set(Index(1,:));
和 XX = [X(1:K/2) zeros(1,N-K) X(K/2+1:K)];
这两句是什么意思?

Index是一个1行K列的向量,里面的元素为1到4的随机整数。
X = QPSK_Set(Index(1,:))这句程序指的是将QPSK_Set中的四个元素随机排列。例如:
若Index=[2,1,4,3],则QPSK_Set中原先第2个元素现在是第1个元素,原先是第1个元素现在是第2个元素,原先是第4个元素现在为第3个元素,……一句话,把QPSK_Set中4个元素按Index重新排列。
XX = [X(1:K/2) zeros(1,N-K) X(K/2+1:K)]指在x向量中插入N-K个0.

由于你上述程序不完整,所以单从上面的语句判断XX = [X(1:K/2) zeros(1,N-K) X(K/2+1:K)]这句程序是错的。你想想看,x的维数是4,但K/2=64,X(1:K/2)这样写不对。