Matlab画信号语图(时频图)

matlab自带函数spectrogram使用起来不方便,自己尝试画信号语图(时频图)
时频图即每次将信号截取一定长度做傅里叶变换,将该过程重复多次,然后将所得结果组合到一起。

%% 2FSK
clc,clear,close;
fb=1000;%符号速率
fc=25000;%载波频率
fcA=fc-fb;%载波频率1
fcB=fc+fb;%载波频率2
fs=100000;%采样速率
M=fs/fb;%采样倍数
num=100;%产生的符号数量

h_n0=ones(1,M)/M^0.5;%矩形成型
N=(M-1)/2;

%余弦成型
% a=0.8;%滾降系数
% L=13;%保留旁瓣个数
% h_n0=rcosdesign(a,L*2,M,'sqrt');%平方根余弦
% N=L*M;%卷积后的偏移((滤波器阶数-1/2)

sigLen=num*M+length(h_n0)-1;%信号长度计算

symb=randi(2,1,num)-1;%产生等概率二进制随机数01
sig_A=zeros(1,num*M);
sig_B=zeros(1,num*M);

sig_A(1:M:end)=symb;%产生冲激函数
sig_B(1:M:end)=abs(symb-1);%这里将symb中原本是0的地方转换为1

%产生的符号与矩形进行卷积,即矩形成型
sig_bs_A=conv(sig_A,h_n0);
sig_bs_B=conv(sig_B,h_n0);

crrA=cos((2*pi*fcA*(0:sigLen-1)/fs));%生成载波1
crrB=cos((2*pi*fcB*(0:sigLen-1)/fs));%生成载波2

sig_frqBd=sig_bs_A.*crrA+sig_bs_B.*crrB;%载波与信号相乘,即调制

%显示调制后信号的频谱
sig_frqBd_FFT=fft(sig_frqBd);
sig_FFT_ABS=abs(sig_frqBd_FFT).^2;
fIdx=((-fs/2):(fs/length(sig_FFT_ABS)):(fs/2));
figure;
semilogy(fIdx(1:end-1),fftshift(sig_FFT_ABS),'b-');
title('信号频谱');

%% 2PSK
clc,clear,close;
fb=1000;%符号速率
fc=25000;%载波频率
fs=100000;%采样速率
M=fs/fb;%采样倍数
num=51200;%产生的符号数量

% h_n0=ones(1,M)/M^0.5;%矩形成型
% N=(M-1)/2;

%余弦成型
a=0.8;%滾降系数
L=13;%保留旁瓣个数
h_n0=rcosdesign(a,L*2,M,'sqrt');%平方根余弦
N=L*M;%卷积后的偏移((滤波器阶数-1/2)

sigLen=num*M+length(h_n0)-1;

%波形成型
symb=randi(2,1,num)*2-3;%双极性信号
sig=zeros(1,num*M);
sig(1:M:end)=symb;
sig_bs=conv(sig,h_n0);

crr=cos((2*pi*fc*(0:sigLen-1)/fs));%生成载波

sig_frqBd=sig_bs.*crr;%载波与信号相乘,即调制

% 显示调制后信号的频谱
sig_frqBd_FFT=fft(sig_frqBd);
sig_FFT_ABS=abs(sig_frqBd_FFT).^2;
fIdx=((-fs/2):(fs/length(sig_FFT_ABS)):(fs/2));
figure(1);
semilogy(fIdx(1:end-1),fftshift(sig_FFT_ABS),'b-');
title('信号频谱');
% 信号时频图
win_len=512;
%窗函数
w=blackman(win_len).';
%所作次数
spe_times=500;
for spe_loop=1:1:spe_times
    %截取信号的长度
    singnal_temp=sig_frqBd(win_len*(spe_loop-1)+1:win_len*(spe_loop));%sig_frqBd为相应的信号
    fft_spe(spe_loop,:)=20*log10(abs(fftshift(fft(singnal_temp.*w))));
end
figure;
mesh(fft_spe.')
grid on;
view(2)

2FSK信号时频图为:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我觉得我很优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值