Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求频率的加权平均值,同时考虑振幅-使用matlab/octave_Matlab_Math_Octave - Fatal编程技术网

求频率的加权平均值,同时考虑振幅-使用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

我试图使用matlab/octave来找到阵列的加权频率(以赫兹为单位),同时考虑每个频率和振幅

阵列的第一列是以赫兹为单位的频率,第二列是振幅,第三列是另一个振幅。下面的示例代码只需复制并粘贴到matlab或octave中

我得到的答案是:

    >>>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)