FSK Modulation Error (Range of Input Values)
이전 댓글 표시
I am trying to write a matlab code for image processing. After computing the DCT for each block in the image and converting decimal matrix to binary and reshaping, I am supposed to do modulation. I tried to use FSK but I keep getting this error:
??? Error using ==> fskmod at 42
Elements of input X must be integers in the range [0, M-1].
------------------------------------------------------------
this is my code:
RGB = imread('cameraman.png');
I = rgb2gray(RGB);
DCT=@dct2
J=blkproc(I,[8 8], DCT);
quanta = 50;
J = double(J) / 255;
J = uint8(J * quanta);
J = double(J) / quanta;
J = reshape(J',[],1);
bstr = dec2bin(J,8) ;
DCT =
@dct2
>> M = 8; k = log2(M);
EbNo = 5;
Fs = 16; nsamp = 17; freqsep = 8;
txsig = fskmod(bstr,M,freqsep,nsamp,Fs); % Modulate.
msg_rx = awgn(txsig,EbNo+10*log10(k)-10*log10(nsamp),...
'measured',[],'dB'); % AWGN channel
msg_rrx = fskdemod(msg_rx,M,freqsep,nsamp,Fs); % Demodulate
[num,BER] = biterr(msg,msg_rrx) % Bit error rate
BER_theory = berawgn(EbNo,'fsk',M,'noncoherent') % Theoretical BER
답변 (2개)
Walter Roberson
2013년 1월 8일
0 개 추천
dec2bin() produces the characters '0' and '1' as output. fskmod() needs integer values as inputs.
Note: you have only two different input values, but fskmod() expects values to be in the range 0 to M-1 where your M is 8, so you have 8 different allowed input values but are only using two different input values. This should suggest to you that your parameters are wrong or that your transmission is not being optimized.
카테고리
도움말 센터 및 File Exchange에서 PHY Components에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!