如何用MATLAB画出小波的时域波形和频谱

如何用MATLAB画出小波的时域波形和频谱,第1张

如正弦波可用如下代码

x=0:05:2pi;

y=sin(x);

plot(x,y,'r-')

axis (-1,4,-2,2)

记得用英文状态输入,还有,其实所有的函数都一样,只是构造出这个函数就行,还有就是自变量应当分的细一些,这样画出的图像好看。

示波器应该能生成数据文件吧,把数据文件import进matlab就可以了

第二个问题很简单,其实所谓连续波形也只是离散点的包络而已,你上面那个程序就可以,只需要把subplot(223);plot(f(1:N/2),X3(1:N/2),'o')这句话中最后的那个‘o'去掉就可以了

瀑布图是指通过巧妙的设置,使图表中数据点的排列形状看似瀑布。

这种效果的图形能够在反映数据的多少的同时,直观的反映出数据的增减变化,在工作表中非常有实用价值。

%你好,该程序读mywavwav文件,然后显示频谱以及波形。注意,mywavwav文件不要太长,否则运算会很慢。

[y,Fs,bits]=wavread('mywavwav');%读出信号,采样率和采样位数。

y=y(:,1);%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

sigLength=length(y);

Y = fft(y,sigLength);

Pyy = Y conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs(0:halflength)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;

figure;plot(t,y);xlabel('Time(s)');

matlab只能做离散数值计算(符号计算只是小部分),所以绘制上述信号图形必须抽样离散化(指定时长,抽样频率等),时域图形可逐点画出,频域要做离散FFT后画出。

根据那奎斯特抽样定理,抽样频率要高于信号中最高频率的两倍,才不会失真,因此频谱中(fs/2,fs)为无用谱,故频域信号的定义域向量与值域向量都应该做减半处理

以sin(x)为例:

clear all;   %

N=1024;      %信号的抽样点数

fs=10;       %抽样频率,高于信号中最高频率的2倍

t=(0:N-1)/fs;     

f=(0:N-1)fs/N;   

x=sin(2pit); %待处理信号sin(x)=sin(2πft),f=1hz

y=abs(fft(x));     %FFT后求模

f=f(1:N/2);      %减半

y=y(1:N/2);      %减半

subplot(2,1,1)   %画图

plot(t(1:2fs),x(1:2fs)); %只画2个周期

subplot(2,1,2)   %画图

plot(f,y);

以上就是关于如何用MATLAB画出小波的时域波形和频谱全部的内容,包括:如何用MATLAB画出小波的时域波形和频谱、用Matlab对实验波形进行频谱分析、Matlab中,什么叫瀑布图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9803844.html

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

发表评论

登录后才能评论

评论列表(0条)

保存