求频率的加权平均值,同时考虑振幅-使用matlab/octave
我试图使用matlab/octave来找到阵列的加权频率(以赫兹为单位),同时考虑每个频率和振幅 阵列的第一列是以赫兹为单位的频率,第二列是振幅,第三列是另一个振幅。下面的示例代码只需复制并粘贴到matlab或octave中 我得到的答案是:求频率的加权平均值,同时考虑振幅-使用matlab/octave,matlab,math,octave,Matlab,Math,Octave,我试图使用matlab/octave来找到阵列的加权频率(以赫兹为单位),同时考虑每个频率和振幅 阵列的第一列是以赫兹为单位的频率,第二列是振幅,第三列是另一个振幅。下面的示例代码只需复制并粘贴到matlab或octave中 我得到的答案是: >>>a1 = 0.00000 0.00000 0.00906 100.00000 0.00001 0.00905 150.00000 0.00001 0.0
>>>a1 =
0.00000 0.00000 0.00906
100.00000 0.00001 0.00905
150.00000 0.00001 0.00905
160.00000 0.00004 0.00902
178.00000 0.00003 0.00903
234.00000 0.00004 0.00902
300.00000 0.00003 0.00903
323.00000 0.00004 0.00901
422.00000 0.00002 0.00903
444.00000 0.00003 0.00903
>>>row_orig_max = 8
>>>col_orig_max = 1
>>>max_orig_freq = 323
>>>row_inv_max = 1
>>>col_inv_max = 1
>>>max_inv_freq = 0
>>>wgtavg_orig = 35.305
>>>ans = 1
>>>wgtavg_inv = 23.089
>>>ans = 1
我已经检查过百分比之和是否等于1,但加权平均数不是接近最大频率323,而是wgtavg_orig=35.305和wgtavg_inv=23.089。知道我的公式/逻辑有什么问题吗
PS:我使用的是倍频程3.8.1,它应该与matlab兼容你在寻找质心吗?如果是这样,您可以使用
wgtavg_orig = xfreq_orig'*yamp_orig/sum(yamp_orig)
wgtavg_inv = xfreq_orig'*yamp_inv/sum(yamp_inv)
你会得到什么
wgtavg_orig =
269.5325
wgtavg_inv =
230.9942
顺便说一句,我不熟悉倍频程,但在MATLAB中你可以使用
[max\u orig\u freq,row\u orig\u max]=maxa:,2而不是
[row_orig_max,col_orig_max] = find(a1(:,2)==max(a1(:,2)))
max_orig_freq=a1(row_orig_max,col_orig_max)
[row_orig_max,col_orig_max] = find(a1(:,2)==max(a1(:,2)))
max_orig_freq=a1(row_orig_max,col_orig_max)