matlab求信号瞬时频率
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/08 12:56:33
matlab求信号瞬时频率
Ts=0.01;
t=0:Ts:10;
f=50; %50Hz
signal=cos(2*pi*f*t)+j*sin(2*pi*f*t);
for i=1:length(siganal)
theta(i)=atan(imag(signal(i))/real(signal(i)));
end
freq=diff(theta)/(2*pi*Ts)
理论上来讲freq的所有元素都应该等于50(50Hz),但是居然会出现值为-450的元素!
请问这是什么问题?
Ts=0.01;
t=0:Ts:10;
f=50; %50Hz
signal=cos(2*pi*f*t)+j*sin(2*pi*f*t);
for i=1:length(siganal)
theta(i)=atan(imag(signal(i))/real(signal(i)));
end
freq=diff(theta)/(2*pi*Ts)
理论上来讲freq的所有元素都应该等于50(50Hz),但是居然会出现值为-450的元素!
请问这是什么问题?
你这个程序贴错了吧,
Ts=0.001还差不多
如果是这样的话,就是fs是1000Hz.
atan在matlab里面取值范围就是[-pi/2,pi/2],因此肯定存在从pi/2到-pi/2的突变,如果采样频率是1000hz的话,1000对应2pi,那么突变-pi对应就是-500hz,所以才会出现从50突变到-450的元素.
求瞬时频率为了避免这种突变,都是取一个中间变量,如
c(i)=signal(i)./signal(i-1)或者c(i)=signal(i).*signal(i-1)' (signal(i-1)的共轭)
然后直接freq = atan(c)/(2*pi*Ts)
for i=1:length(siganal)
theta(i)=atan(imag(signal(i))/real(signal(i)));
end
直接写作theta=atan(imag(signal)/real(signal));
避免循环
Ts=0.001还差不多
如果是这样的话,就是fs是1000Hz.
atan在matlab里面取值范围就是[-pi/2,pi/2],因此肯定存在从pi/2到-pi/2的突变,如果采样频率是1000hz的话,1000对应2pi,那么突变-pi对应就是-500hz,所以才会出现从50突变到-450的元素.
求瞬时频率为了避免这种突变,都是取一个中间变量,如
c(i)=signal(i)./signal(i-1)或者c(i)=signal(i).*signal(i-1)' (signal(i-1)的共轭)
然后直接freq = atan(c)/(2*pi*Ts)
for i=1:length(siganal)
theta(i)=atan(imag(signal(i))/real(signal(i)));
end
直接写作theta=atan(imag(signal)/real(signal));
避免循环
matlab求信号瞬时频率
关于采样信号的采样频率的问题,求matlab程序!
将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含的频率值?
如何用matlab生成一个频率渐变的正弦信号
matlab仿真4ASK信号的频率测量
求正弦信号的采样恢复后信号频率
【急求】信号与系统 抽样奈奎斯特频率的频率
关于matlab求信号相位的问题
用matlab求信号的频谱
求matlab高手,处理声音信号.
matlab画一个正弦信号图,频率为300HZ的正弦信号900个周期,频率为400hz的正弦信号1200个周期.
matlab求助:高斯白噪声把两未知频率的正弦信号淹没,需求出两正弦信号的频率(频率不同)