Need Help in 3x3 QPSK for Likelihood
this code is work with 2x2 QPSK but not working with 3x3 QPSK of Maximum likelihood and dont know how to fix it
this is the code of 3x3 for Likelihood
error is :
??? Error using ==> mtimes
Inner matrix dimensions must agree
Error in ==> ML_3_3 at 11
YMHS = kron(Y,ones(1,nSymbols^N)) - H*Symbol_Vectors;
Error in ==> test_ML_3_3 a 36
X_Decode = ML_Decode_3_3(Y,H,Symbols);
thanks
this is the code of 3x3 for Likelihood
function [Received_Symbols] = ML_Decode_3_3(Y,H,Symbols)
N=3;
nSymbols = length(Symbols);
Symbol_Vectors = [ kron( ones(1,nSymbols) , Symbols ) ; kron( Symbols , ones(1,nSymbols) ) ];
YMHS = kron(Y,ones(1,nSymbols^N)) - H*Symbol_Vectors;
Distance = sum( YMHS.*conj(YMHS) , 1 );
[ C , Index] = min(Distance);
Received_Symbols = Symbol_Vectors(:,Index);
and then adding the test code to it
Modulation = 'QPSK'
Decode_Method = 'Maximum Likelihood'
switch Modulation
case {'QPSK'}
Symbols = [ 1+j 1-j -1+j -1-j ]';
end
Symbols = Symbols.'
SNR_Array = [0.1 0.3 0.7 1.2 2.5 5 6.2 10 15.4 22 45 75.7 100 200];
nSNR = length(SNR_Array);
Ntest = 20;
N = 3;
for iSNR = 1 : nSNR
SNR = SNR_Array(iSNR);
Nerror = 0;
for i = 1:Ntest
H = randn(N,N) + j*randn(N,N);
X = Symbols( ceil( 4*rand(N,1) ) )';
Noise = (randn(N,1) + j*randn(N,1))/sqrt(2)/sqrt(SNR);
Y = H*X + Noise;
switch Decode_Method
case {'Maximum Likelihood'}
X_Decode = ML_Decode_3_3(Y,H,Symbols);
Nerror = Nerror + length( find( X ~= X_Decode) );
end
end
Symbol_Error_Rate(iSNR) = Nerror/Ntest/N;
end
figure(1)
loglog(SNR_Array, Symbol_Error_Rate,'b')
xlabel('SNR')
ylabel('Symbol Error Ratio')
title('Symbol Error Ratio')
error is :
??? Error using ==> mtimes
Inner matrix dimensions must agree
Error in ==> ML_3_3 at 11
YMHS = kron(Y,ones(1,nSymbols^N)) - H*Symbol_Vectors;
Error in ==> test_ML_3_3 a 36
X_Decode = ML_Decode_3_3(Y,H,Symbols);
thanks
0
Comments