完治 发表于 2008-4-14 12:44

subplot(231);

subplot(231);什么意思啊?帮忙:handshake

youyoulan 发表于 2008-4-14 13:52

help subplot
就是用来画子图的
这是最基本的绘图指令,你该找本MATLAB的书来看看吧

完治 发表于 2008-4-15 11:26

有个问题,请教!

当FFT加窗时计算幅值时,所乘的恢复系数怎么来的?

rocky_ding 发表于 2008-4-24 09:53

如果我输入信号是cos(4*pi*f0*t+pi/3)+cos(2*pi*f0*t+pi/6)为什么用上面程序得出来的初始相位还是60°?
另外“angle(y(6))*180/pi %求信号初时相位。频率坐标f为,所以谱线y中第6根谱线和信号x对应。”怎么解释?程序运行后的幅频谱图中根本看不到0.06HZ的频谱!

songzy41 发表于 2008-5-7 08:41

本帖最后由 wdhd 于 2016-6-3 10:14 编辑

原帖由 eguang8116 于 2008-4-2 15:12 发表
那如果频率分辨率很小的话,是不是就可以不用通过频谱校正了呢?
只要信号频率是频率分辨率的整数倍,就能直接从谱图上得到幅值和初始相角。频率分辨率的大小是相对的,信号频率不是频率分辨率的整数倍时,为了得到信号的幅值和初始相角,就得用频谱校正法。

songzy41 发表于 2008-5-7 08:44

本帖最后由 wdhd 于 2016-6-3 10:14 编辑

原帖由 rocky_ding 于 2008-4-24 09:53 发表
如果我输入信号是cos(4*pi*f0*t+pi/3)+cos(2*pi*f0*t+pi/6)为什么用上面程序得出来的初始相位还是60°?
另外“angle(y(6))*180/pi %求信号初时相位。频率坐标f为,所以谱线y ...
在楼主的信号中是两个频率,而zhlong的程序只对一个频率计算出初始相角。只要稍修改一下,增加
angle(y(11))*180/pi
就能得到0.02时的初始相角:
ans =
   30.0000

ans =
   60.0000

songzy41 发表于 2008-5-7 09:08

本帖最后由 wdhd 于 2016-6-3 10:14 编辑

原帖由 完治 于 2008-4-15 11:26 发表
当FFT加窗时计算幅值时,所乘的恢复系数怎么来的?
请参看“加窗频谱分析的恢复系数及其求法” 汕头大学学报 2003 18(3)

mhd 发表于 2008-5-7 16:24

相位的计算对故障诊断和模态参数识别,都有很大的用处啊!

Jnny_CN 发表于 2008-5-7 16:43

本帖最后由 wdhd 于 2016-6-3 10:14 编辑

原帖由 songzy41 于 2008-5-7 09:08 发表

请参看“加窗频谱分析的恢复系数及其求法” 汕头大学学报 2003 18(3)
加窗频谱分析的恢复系数及其求法<---这份文档不知哪位可以提供啊,网上有的都不能下载阿

songzy41 发表于 2008-5-7 16:57

告诉我email地址,我可发送给你。

Jnny_CN 发表于 2008-5-7 17:10

本帖最后由 wdhd 于 2016-6-3 10:15 编辑

原帖由 songzy41 于 2008-5-7 16:57 发表
告诉我email地址,我可发送给你。
jnny_cn@live.com

非常感谢您的帮助,这几天真是从您这里学了很多

ilovechina1985 发表于 2008-5-7 23:13

我在做频谱校正时加hanning窗时程序出错,恳请高人指点一下

先谢过了!
t=0:0.00001:0.02;
    leng=length(t);
    for m=1:leng
       if t(m)<0.00167
      v(m)=0;
       elseif ((t(m)>=0.00167)&(t(m)<0.01))
      v(m)=sin(2*pi*50*t(m));
       elseif ((t(m)>=0.01)&(t(m)<0.01167))
            v(m)=0;
       elseif t(m)>=0.01167
            v(m)=sin(2*pi*50*t(m));
       end
    end
plot(t,v);grid;
N=2000;
w=hanning(2000);v=v.*w';
y=fft(v,N);
mag=abs(y)*2/N;
f=(0:length(y)-1)'*100000/length(y);
figure;
plot(f(1:N/2),mag(1:N/2));
axis();
xlabel('频率(Hz)');ylabel('幅值');
grid;

出错信息为:??? Error using ==> times
Matrix dimensions must agree.

Error in ==> hanshu at 16
w=hanning(2000);v=v.*w';

songzy41 发表于 2008-5-8 08:22

把语句
w=hanning(2000);v=v.*w';
应改为
w=hanning(2001);v=v.*w';

ilovechina1985 发表于 2008-5-8 21:48

回复 28楼 的帖子

谢谢您的指点,但为什么是2001呢,之前不是设的2000吗

ilovechina1985 发表于 2008-5-8 22:04

还有一点想请教:如果采用整周期采样,我程序里的N是不是就应该设成2000?
页: 1 [2] 3 4 5 6 7
查看完整版本: 信号经过FFT后,该怎样计算幅值和相位