数组的归一化c语言,如何归一化频率数组

我有两个来自一个文件的音频文件,我将其分为“信号”文件和“噪声”文件(背景)。我需要知道该录音的主要频率,分布模式或频率,以便能够比较不同动物发出的不同声音。

我对每个文件执行了fft,然后从信号中扣除了背景噪声。

我不在乎20kHz以下和100kHz以上对我会发生什么,它们是要被丢弃的噪声。

振幅是我无法控制的,因此每次录制都必须标准化。

标准化这些数据并使不同记录之间的比较在统计上可行的最佳方法是什么?

function bindel=binset(raw_data_val,signal,noise)

%in case all the recording is only noise

if isempty(signal)

bindel=nan;

return

end

%frequancy of sampling

%Fs= 250000;

%extract the signal parts and noise parts

%"signal" is an index array of all the elemnts of the

%"raw data" array that contain a signal

signal_data=raw_data_val(signal);

noise_data=raw_data_val(noise);

%determine the size of the signal array

L= size(signal_data,1);

NFFT = 2^nextpow2(L(1,1));

Y1 = fft(signal_data,NFFT)/L(1,1);

del1=smooth(2*abs(Y1(1:NFFT/2+1)));

Y2 = fft(noise_data,NFFT)/L(1,1);

del2=smooth(2*abs(Y2(1:NFFT/2+1)));

del=del1-del2;

%combine the data into 125 bindels

binsum=size(del)/125;

bindel=zeros(1,125);

for j=1:125,

bindel(j)= sum(del((j-1)*floor(binsum(1,1))+1:j*floor(binsum(1,1))));

end

%%%deleting low freuqencies- testing filter set to change

%%%everything bellow 20 khz to zero

%%%normalizing between 1 to 0

bindel(1:20)=0;

bindel(100:end)=0;

norm_bin=(bindel - min(bindel)) / ( max(bindel) - min(bindel) );

bindel=norm_bin;

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值