dzkt 发表于 2010-7-1 15:02

怎样通过频谱求出信号

t=0:0.001:1;
x=sin(2*pi*30*t)+cos(2*pi*50*t);
plot(x,'b-');
X=fft(x);
dt=0.001;
N=length(x);
f=/(N*dt);
figure(2)
plot(f,abs(X)*2/N)
% xlim();
xlabel('fruquency')
ylabel('Amplitude')
xlim()
s=abs(X)*2/N;
s1=s.*0.5;%振幅谱减小一半
%w=angle(X);
Y=ifft(s1);
plot(Y)
条件;(振幅谱减小一半,相位谱不变)
这样怎么来求得原信号,我求的好像不对,该怎么做啊?请高手指点一下,谢谢

Cena马 发表于 2010-7-1 16:33

回复 楼主 dzkt 的帖子

用这种还原时域信号是不可行的,傅里叶变换是对信号做的全局变换,即使某个频率的信号只出现在局部,他也会当做全局处理,楼主的意思是不是只是做傅里叶逆变换啊?

songzy41 发表于 2010-7-1 19:11

原帖由 dzkt 于 2010-7-1 15:02 发表 http://www.chinavib.com/forum/images/common/back.gif
t=0:0.001:1;
x=sin(2*pi*30*t)+cos(2*pi*50*t);
plot(x,'b-');
X=fft(x);
dt=0.001;
N=length(x);
f=/(N*dt);
figure(2)
plot(f,abs(X)*2/N)
% xlim();
xlabel('fruquency')
ylabel('Ampl ...条件;(振幅谱减小一半,相位谱不变)
这样怎么来求得原信号,我求的好像不对,该怎么做啊?请高手指点一下,谢谢
LZ的是不是要求出时间信号,条件是振幅谱减小一半,相位谱不变?
如果是这样的要求,对上程序稍做改动为:
t=0:0.001:1;
x=sin(2*pi*30*t)+cos(2*pi*50*t);
plot(x,'b-'); hold on;
X=fft(x);
dt=0.001;
N=length(x);
f=/(N*dt);
figure(2)
plot(f,abs(X)*2/N,'b');
xlabel('fruquency')
ylabel('Amplitude')
xlim()
s=abs(X)*2/N;
s1=s.*0.5;%振幅谱减小一半
w=angle(X);
S1=N/2*s1.*exp(j*w);
Y=ifft(S1);
figure(1)
plot(real(Y),'r-')
得到的图如下,可看出信号的振幅减小一半(原始信号是蓝线,红线是幅值减小一半的信号):

[ 本帖最后由 songzy41 于 2010-7-1 19:13 编辑 ]

dzkt 发表于 2010-7-2 10:11

谢谢songzy41的解答,非常感谢您的帮助,就是要的这种效果。

魔女 发表于 2013-12-10 16:43

收藏{:{03}:}
页: [1]
查看完整版本: 怎样通过频谱求出信号