2013-05-17 62 views
-3

为了确定误码率,我需要使用矩形16QAM调制方案生成一个随机数字消息的输入信号,该消息由从0到15的40320个整数组成,最小误差为101个。MATLAB中的随机整数

如何在Matlab中实现这个功能?到目前为止,我已经写了这些代码。任何人都可以启发我吗?

M=16; %signal constellation size 
log2M =log2(M); %number of bits per symbol 
N= 40320; %No of random integers sent 
coderate =1;% FEC not required 
MinNoErr =101; %Minimum no of received symbol error 
MaxNoErr =11e9; %Maximum no of received symbol error 
nsamp =1; %No of samples per symbol 
B= randi([1, M-1],N,1); % Random integer data stream 

% Modulate 
hMod = comm.RectangularQAMModulator(M); % Create a 16-QAM modulator 
txqam = modulate(modem.qammod(M),B);% Modulate using 16-QAM. 
txqam =T; %transmited signal 

% Send signal over an AWGN channel 
EbNo = [5:1:15]; % In dB 
SNR = EbNo + 10*log10(log2M*coderate) - 10*log10(nsamp); 
hChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)', ... 
'SNR',SNR); 

hChan.SignalPower = (T' * T)/ length(T); 
ynoisy = step(hChan,T); 

回答

1

据我所知,所有你需要的是一个长度为40320的随机整数从区间[1,15]的向量。如果是这样,你需要的是:

my_vector = randi(15 + 1, [1, 40320]) - 1; 

不要澄清它是什么,你需要的情况下,这是不是你在找什么。

+0

感谢您的回应,但我试图实现16QAM格雷码排列,使模拟运行,直到发生101位错误,使我能够计算各种Eb/No值的BER(误码率) – Dammy