matlab程序 求频谱带宽

已经得到了频谱图,要做频谱分析,要求3分贝的带宽,求程序啊。。。。
谢谢。。。。。

3dB带宽就是:以频谱最高点的一半为标准,超过这个标准的算在带宽之内,低于这个标准算不算,编个小程序就可以了,还不会直接数据发过来,我来算。追问

我这里有很多组数据都要算,你大概把小程序发给我就OK

追答

写了个小程序,数据是很理想的形状,如果你的数据是实测的,那肯定会有毛刺,直接用这个程序做,结果是不准的,要用滤波器做平均。
总之你就简单看看思路吧,看懂了在根据自己的需要改进
************************************
clc;
clear;

f=0:pi/180:pi;
Data=sin(f);

MaxData=max(Data);
Threshold=MaxData/2;
BandIdx=find(Data>Threshold);
MaxIdx=find(Data==MaxData);
StartIdx=BandIdx(1)
StopIdx=BandIdx(end)

figure
plot(f,Data,'-b')
hold on
plot([f(StartIdx),f(StartIdx)],[0,Data(StartIdx)],'r--');
plot([f(StopIdx),f(StopIdx)],[0,Data(StopIdx)],'r--');

温馨提示:答案为网友推荐,仅供参考