www.pudn.com > PSK.zip > my_pskdemod.m
function z = my_pskdemod(y , m)
%this function demodulate the psk modulated signal, here y is the modulated
%signal with m-psk, and z is the output. here y can be row or coulmn
%vector, m is the integer power of 2 and , z should be a row vector.
%santosh shah, The LNM IIT Jaipur (India)(santosh.jnt@gmail.com) 24/04/07
%i have to check if M is equal to the power of 2 and x is in between 0 to
%M-1 so..
if log2(m)~= floor(log2(m))
error('Please check the value of m that you have provided for type M-QAM.');
end
%now comparing the data from c's vector after rounding the input data.
% Allocate space for output
z = zeros(size(y));
%now generating the cancellation points
t = (0:m-1);
c = exp(2*pi*t*(m-1)/m*(-i)); % taking the concept of cosx + i*sinx
% Slicer: Find closest constellation symbol, symbol-by-symbol.
for k = 1:length(y)
[nil ind] = min(abs(y(k) - c));
z(k) = ind - 1;
end