声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1714|回复: 13

[小波] 这几句话错哪里了?

[复制链接]
发表于 2007-8-14 20:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
t=0:dt:8191*dt;
Wd=rectwin(8192);
fsai=(exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-12)*Wd';
exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-12为1*8192,Wd'也为1*8192的,怎么总是说
??? Error using ==> *
Inner matrix dimensions must agree.
Error in ==> D:\MATLAB6p51\work\xiaobobao.m
On line 16  ==> fsai=(exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-12)*Wd';

请高手指教,我同学说应该用hann(8192),用hann时候到是没有错误,,但是要的频率不符合要求,目的要是fsai为接近矩形的那种窗的

[ 本帖最后由 zhlong 于 2007-8-15 10:49 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-8-14 20:26 | 显示全部楼层
fsai=(exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-12)*Wd';

后面的*要用点乘吧。
 楼主| 发表于 2007-8-14 20:28 | 显示全部楼层
点乘改了还是有错误,应该是不能选择矩形窗,应该用汉宁窗,但是我就搞不懂了,汉宁窗边界处有波纹的
发表于 2007-8-14 20:28 | 显示全部楼层
楼主这个问题属于matlab的问题,matlab版的eight版主总结了很多常见程序出错问题,楼主可以参考一下。http://forum.vibunion.com/forum/thread-46001-1-1.html
发表于 2007-8-14 20:31 | 显示全部楼层

回复 #3 kevin19821 的帖子

楼主把参数都给齐一下吧,便于大家给你调试。
 楼主| 发表于 2007-8-14 20:38 | 显示全部楼层
汉宁窗的选择问题吧
 楼主| 发表于 2007-8-14 20:38 | 显示全部楼层
好的
clc
clear all
fs=4096;
dt=1/fs;
t=0:dt:8191*dt;
Wd=rectwin(8192)
s=3*sin(2*pi*50*t)+2*sin(2*pi*100*t)+0.5*sin(2*pi*150*t);
fs1=fft(s);
subplot(311)
%j=7,s=127
% subplot(311);
% plot(f-fs/2,abs([f1((N/2+1):N) f1(1:N/2)]))
m=140;
n=160;
B=n-m;
fsai=(exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-12).*Wd';
f1=fft(fsai);
subplot(312)
N=8192;
f=fs*(0:N-1)./N;
plot(f-fs/2,abs([f1((N/2+1):N) f1(1:N/2)]));

[ 本帖最后由 kevin19821 于 2007-8-14 20:42 编辑 ]

f1的频谱图

f1的频谱图

50HZ和100HZ的不应该出现的

50HZ和100HZ的不应该出现的
 楼主| 发表于 2007-8-14 20:45 | 显示全部楼层
clc
clear all
fs=4096;
dt=1/fs;
t=0:dt:8191*dt;
Wd=rectwin(8192)
s=3*sin(2*pi*50*t)+2*sin(2*pi*100*t)+0.5*sin(2*pi*150*t);
fs1=fft(s);
subplot(311)
%j=7,s=127
% subplot(311);
% plot(f-fs/2,abs([f1((N/2+1):N) f1(1:N/2)]))
m=140;
n=160;
B=n-m;
fsai=(exp(2*n*pi*t*i)-exp(2*pi*m*t*i))./(2*pi*(n-m)*t*i+1e-12).*Wd';
f1=fft(fsai);
subplot(312)
N=8192;
f=fs*(0:N-1)./N;
plot(f-fs/2,abs([f1((N/2+1):N) f1(1:N/2)]));
% s(1:1./fs:(m-1)*fs./N)=0;
% s(n*fs./N:1./fs:N*fs./N)=0;
N=length(s)
W=f1.*fs1;
subplot(313)
f=fs*(0:N-1)./N;
plot(f-fs/2,abs([W((N/2+1):N) W(1:N/2)]));
Wt=ifft(W);
subplot(313)
就是由于f1的频谱图中两边有衰减,结果使得滤波后的结果50HZ和100HZ也有的,怎么能把f1的频谱变成矩形就行

[ 本帖最后由 zhlong 于 2007-8-14 21:01 编辑 ]
 楼主| 发表于 2007-8-14 21:09 | 显示全部楼层
顶,这个是谐波小波包的程序,麻烦大家了,知道的回个话呀
发表于 2007-8-14 21:30 | 显示全部楼层

回复 #9 kevin19821 的帖子

楼主是要滤掉50和100Hz分量吧
 楼主| 发表于 2007-8-14 21:47 | 显示全部楼层
我现在知道了,我在定频率范围的时候,定为140-160了,加了汉林窗,还是不行,把频率范围定为145-152就可以提取150HZ的频率,由于汉林窗两边有波动,难免会把50和100HZ的频率带进去
发表于 2007-8-14 21:50 | 显示全部楼层

回复 #11 kevin19821 的帖子

对哈,应该是频域矩形窗都有一个过渡段造成的。
 楼主| 发表于 2007-8-15 07:53 | 显示全部楼层
以上为谐波小波包分解程序,有用的可以参考的
发表于 2007-8-15 07:58 | 显示全部楼层

回复 #13 kevin19821 的帖子

楼主可以将信息更完善一些么,谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-27 00:29 , Processed in 0.099368 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表