function [d_pskm,d_m] = PSKM(s,M,fc,fb,fs)
% 实现信号的MPSK调制
% [d_pskm,d_m] = PSKM(s,M,fc,fb,fs)
%
% 输入: s M进制码序列
% M MPSK调制
% fc 载波频率
% fb 码速率
% fs 采样频率
% 输出: d_pskm MPSK调制后输出信号
% d_m 成形码元
%
% made in 2014.10.19 by zoocle
L = length(s);
N = fs/fb; % 成形点数
t = 0:1/fs:(L/fb)-1/fs;
m = [];
b = [];
c = [];
y = pskmod(s,M,0,'gray');
Pv = atan2(imag(y),real(y));
Pv(Pv<0) = Pv(Pv<0)+2*pi;
for ls = 1:length(s)
mtemp = ones(1,N);
btemp = mtemp*s(ls);
ctemp = exp(1i*(2*pi*fc*t((ls-1)*N+(1:N))+Pv(ls)));
m = [m mtemp];
c = [c ctemp];
b = [b btemp];
end
d_m = b;
d_pskm = m.*c;
end