待解决问题
对数字信号(FSK,PSK等)进行短时傅里叶变换画时频图
离问题结束还有0天0小时  |  提问者:春秋代序   |  提问时间:2022-3-3 15:40
以前从未接触过 信号方面的知识,参考网上的编的程序,画出来的时频图感觉有问题,有大佬指点一下吗?

fc=5000; %载波频率
fs=40000; %采样速率
t0=5.5; %信号长度,具体说来应该是载波信号的时间长度,似乎随便一个数字才行
fd=2000; %符号速率=波特率;数据传输速率或者说比特率,数据带宽=波特率*log2m


ts=1/fs; %采样周期或采样时间,它是采样之间的时间间隔
M=25; %码元个数,基带信号脉冲长度,要发送信息的长度
ti=1/fd; %波特率的倒数,每位传输所需要的时间
N=ti/ts; %每个码元能采这么多个
t=0:ts:t0;

m=sin(2*pi*fc*t); %载波信号;

n=1;
x=randi([0,1],1,M);
y=FSK4(x,M,N,fc,t,n);


%4FSK
function y=FSK4(x,M,N,fc,t,n)

%4FSK的载波频率
m1=sin(2*pi*fc*t);
m2=sin(2*pi*2*fc*t);
m3=sin(2*pi*3*fc*t);
m4=sin(2*pi*4*fc*t);

y=zeros(1,M*N);
for i=1:M
if x(i)==0;
for j=1:N
y((i-1)*N+j)=(1-x(i))*m1(j);
end
elseif x(i)==1;
for j=1:N
y((i-1)*N+j)=x(i)*m2(j);
end
elseif x(i)==2;
for j=1:N
y((i-1)*N+j)=(x(i)-1)*m3(j);
end
elseif x(i)==3;
for j=1:N
y((i-1)*N+j)=(x(i)-2)*m4(j);
end
end
end


figure(1)
tfry=tfrstft((y-nanmean(y))');
imagesc(abs(tfry));
% %title('已调信号时频图');%
 
我要回答:  回答字数在10000字以内