📄 xc_psk.m
字号:
function [y1,y2,pp,dela1]=xc_psk(Fl,Fs,I,Q,x1,x2,M)
M1=length(x1);
N=Fs/Fl;
z=ones(1,N);
X1=x1'*z;
X2=x2'*z;
[r,c]=size(I);
X1=X1.';
X2=X2.';
X1=reshape(X1,1,M1*N);
X2=reshape(X2,1,M1*N);
t=0:1/Fs:(r*c-1)/Fs;
% signal with phase offset
r1=I+j*Q;
%
N1=8;
s0=X1(1:M1*N)+j*X2(1:M1*N);
Y(1:M1)=x1(1:M1)+j*x2(1:M1);
p=(-0.5:1/N1:0.5-1/N1);
for i=1:N1
h1=0.5+0.5*cos(2*pi*Fl*(t-0.5/Fl+p(i)/Fl));
s1=s0.*h1(1:M1*N);
a=r1(1:M1*N);
zz(i)=abs(sum(a.*conj(s1)))^2;
end
[l]=find(zz==max(zz));
pp=p(l);
zz1=sum(r1(1:M1*N).*conj(s1(1:M1*N)));
zz2=sum(r1(1:M1*N).*conj(r1(1:M1*N)));
z=(zz1/zz2)/abs(zz1/zz2);
dela1=angle(z)*180/pi;
%r2=r1;
r2=r1*conj(z);
h1=0.5+0.5*cos(2*pi*Fl*(t-0.5/Fl+pp/Fl));
map=[0:M-1].*2*pi/M;
map1=cos(map);
map2=sin(map);
for k=M1+1:length(r1)/N
for i=1:M
s2=s0(N+1:M1*N).*h1((k-M1)*N+1:(k-1)*N);
sr=[real(s2),map1(i)*h1((k-1)*N+1:k*N)];
si=[imag(s2),map2(i)*h1((k-1)*N+1:k*N)];
s1=sr+j*si;
zf(i)=abs(sum(r2((k-M1)*N+1:k*N).*conj(s1)))^2;
end
m=find(zf==max(zf));
Y(k)=map1(m)+j*map2(m);
s0=s0(N+1:M1*N);
s0=[real(s0),map1(m)*ones(1,N)]+j*[imag(s0),map2(m)*ones(1,N)];
%a1=[real(s0),map1(m)*ones(1,N)];
%b1=[imag(s0),map2(m)*ones(1,N)];
%s0=a1+j*b1;
end
y1=real(Y);
y2=imag(Y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -