matlab中时频图怎么画

matlab中时频图怎么画,第1张

这样:
clear;clc
%load('C:\Users\zj\Documents\MATLAB\12xls');
m=xlsread('C:\Users\zj\Documents\MATLAB\Mxls');
X=m(2,:);%输出第2行
%E=E';
%n=size(X);
%s=E(1:n(2));
T=-02:0002:0308;
%T = 0:0001:2;
%X = chirp(T,0,1,150);
[S,F,T,P] = spectrogram(X,256,250,256,1E3);
%surf(T,F,10log10(P),'edgecolor','none'); axis tight;
mesh(T,F,10log10(P)); axis tight;
colorbar;
view(0,90);
xlabel('Time (Seconds)'); ylabel('Hz');

CWT可以,CWT是冗余滴可满足采样定理,尺度是连续滴某尺度变换结果是一个向量数组可对应一个频率值,所以可作出时频图。DWT和WP非冗余不能保证一定满足采样定理要求,所以有时要考虑频率混迭,吉布斯效应和平移敏感性等诸多问题,即使不考虑这些,只考虑细节信息与CWT对应,也是带通性质,某层细节实际对应一个频段,而细节结果是一个向量数组对应一段频率,那么如何做时频谱?

看看下面的是不是你要的结果:

clc

clear all

close all

T = 1e5;       % 设置信号持续时间

n = 999;       % 设置0~T持续时间内采样点数

                   % 由于你给的程序中用n+1,因此这里实际采样点数为1000

                   % 上面这两个参数设置的不够大的话,会感觉对最后输出波形影响较大

                   % 但实际上只是采样位置不同导致的

t = linspace(0,T,n+1);           % 信号横坐标

OUT1 = sin(2pi2000t);

OUT2 = sin(2pi4000t);

OUT3 = sin(2pi6000t);

OUT = OUT1 + OUT2 + OUT3;

figure

plot(t, OUT);

grid on

xlabel('t');

ylabel('OUT');

figure

spectrogram(OUT,512,120,256,1e4)

输出波形:

这是python的matplotlib里的一个画wav文件的时频分析(specgram)的函数。和matlab里的那个差不多。使用超级方便,自动就做好了短时傅立叶变换(short
time fourier
transform)~函数用法具体可参照>下面的回答是DWT的,它也是个没有完全理解小波的二把刀。你要的那是CWT,只有CWT才会谈及“scale”一词,可以用scal2frq函数转换尺度和实际频率,在网上搜索“小波时频图”会有完整的代码。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12708053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存