wscalogram
信号,现在我想要绘制频率幅值,如下图所示。但是我不知道该怎么做:我已使用MATLAB函数
scal2freq
将标度转换为伪频率。另外,我的信号中的某些频率具有较大的阻尼比(4%),因此在绘图中看不到它们。如何夸大这些高阻尼模式? 我正在使用MATLAB,这是我的代码:
% Import the text4.txt to matlab workspace. and save it under name "data"
t=linspace(0,30,301);
Fs=ceil(inv(t(2)-t(1)));
x=data(:,4); % use x=data(:,3),x=data(:,5) too. first column is time,second is refrence
wname = 'morl';
scales = 1:1:256;
coefs = cwt(x,scales,wname,'lvlabs');
freq = scal2frq(scales,wname,1/Fs);
surf(t,freq,abs(coefs));shading('interp');
axis tight; xlabel('Seconds'); ylabel('Pseudo-Frequency (Hz)');
axis([0 30 0 1 0 60])
xlabel('Time'); ylabel('Frequency');
figure;
sc=wscalogram('image',coefs,'scales',freq,'ydata',x);
hold on
我当前的情节如下:
#1 楼
稍微修改您的代码,但没有重大更改,无论哪种方式,我都能获得正确的结果。在此处使用此模板代码,您应该不会看到任何问题。我得到了正确的结果。clear all;
t=linspace(0,30,301);
Fs = (inv(t(2)-t(1)));
x=randn(100,1);
wname = 'morl';
scales = 1:1:256;
chefs = cwt(x,scales,wname,'lvlabs');
freq = scal2frq(scales,wname,1/Fs);
figure;
coefsSquared = abs(coefs).^2;
imagesc(coefsSquared);
grid off;
%Pick one of the columsn to plot:
figure;
plot(coefsSquared(:,47))
要得到的图像位于您放置的第一张图像的右侧,那只是时间切片频谱。换句话说,频率-时间矩阵的一列。
例如,我们可能会得到以下频率与时间的平方系数矩阵:
让我们假设我们希望在第47列查看时间切片的频谱。然后,在此处给出:
这里,您将看到系数的功效,与。频率,对应于第47列的时间片。
评论
$ \ begingroup $
感谢您修改代码。但是我的问题还没有得到答案。问题是如何绘制频率幅值或刻度幅值[无差异]。我想要一个像第一张图片右侧的图。提前致谢
$ \ endgroup $
– SAH
13年7月30日在19:45
$ \ begingroup $
@Electricman右侧的图只是频率与时间矩阵的一列。
$ \ endgroup $
– Tarin Ziyaee
13年7月30日在19:55
$ \ begingroup $
-@ user4619不是频率与时间的关系,时间范围是0-20,频率范围是0-2.5,但是右侧图是频率与幅度的关系。我不确定其确切的系数或大小,但显然与cofes或cofes ^ 2成正比。 n
$ \ endgroup $
– SAH
13年7月30日在20:03
$ \ begingroup $
@Electricman请查看编辑。现在更清楚了吗?
$ \ endgroup $
– Tarin Ziyaee
13年7月30日在20:10
$ \ begingroup $
-@ user4619有效。感谢您的回答。我在mfile的末尾放了一些代码。并获得与上述图右侧相同的图。 cof2 = abs(coefs)。^ 2; cof2trans = cof2'; maxmods = max(cof2trans);数字; plot(maxmods,freq)axis([0 60 0 1])最好的问候
$ \ endgroup $
– SAH
13年7月30日在21:11
#2 楼
连续小波变换(CWT)是一种时标分析方法。是的,您正确地阅读了它,按比例缩放,而不是频率。但是,可以将比例尺映射到频率,甚至非常容易。由于您是MATLAB用户,因此您可能需要使用此函数,该函数将执行以下操作:F = scal2frq(A,'wname',DELTA)返回伪频率对应于A给出的标度,小波函数“ wname”(有关更多信息,请参见wavefun)和采样周期DELTA。
如您所见,频率不是真实的信号中的频率,但近似值。如果需要实际频率,则应使用短时傅立叶变换(STFT)。
那么,什么时候应该使用CWT?一般而言,小波在信号瞬变(即快速变化)时效果很好。
编辑:哈哈,我不知道我在这里做什么。抱歉:-D完全没有回答您的问题。只需阅读标题即可。...
评论
$ \ begingroup $
@wave您的信息是正确的。但是那又怎样呢?我只想有一个像第一张图片右侧的图。频率与幅度。只要我可以使用scal2freq,就可以得到比例与幅度的关系。
$ \ endgroup $
– SAH
13年7月30日在19:27
$ \ begingroup $
“如果需要实际频率,则应使用短时傅立叶变换(STFT)。” Morlet小波的频率与高斯窗STFT的频率相同。两个变换的“原子”是相同的。
$ \ endgroup $
– Endolith
2013年9月6日14:03
#3 楼
不知道您是否仍需要帮助...如果您想要频率与幅度的关系,请使用“ mesh / surf”命令来绘制系数。
然后更改图的方向,以便获得所需的结果。为此,请参见“查看”命令。
评论
$ \ begingroup $
谢谢,我几个月前解决了这个问题,并发表了我的结果。但是,下次我会尝试您的替代方法。但是,请将您的答案移至评论位置。祝好运。 a
$ \ endgroup $
– SAH
2014年8月25日10:39
评论
小波变换数据采用什么形式?嗨@JimClay!我不确定我是否理解你的问题。但是如果您要说的是它的外观,则就像我在问题中维护的第二个链接一样。我想要一个像第一个链接的情节。 (第二个[myplot])cubeupload.com/im/bSSlMI.jpg第一个[所需])cubeupload.com/im/KbhGMI.jpg这是我的信号
我不太确定你的问题是什么...
嗨@ user4619;看第一个情节。您会在小波比例尺[由matlab获得]的右侧看到一个图[freq-magnitude]。第二张照片是我的小波缩放图。但我不知道如何像第一个图的右侧那样绘制[freq-magnitude]。有什么帮助吗?
@Electricman频谱图与比例尺不同。如果要进行比例尺绘制,则没有频率VS时间,只有比例VS时间。那你到底在做什么呢?