Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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 存在直流信号时的谐波平均值_Matlab_Mean_Frequency Domain - Fatal编程技术网

Matlab 存在直流信号时的谐波平均值

Matlab 存在直流信号时的谐波平均值,matlab,mean,frequency-domain,Matlab,Mean,Frequency Domain,我有一个噪声信号的输出,保存为一组余弦 我有一组从0到xHz的频率(x是一个大数字),还有一组相同大小的振幅 我想计算出频率的谐波平均值,当频率的权重是相应振幅的大小时 例如: 如果我有一组频率 [1,2,3]和振幅[10,100,1000](这样频率1的余弦具有振幅10,等等)。然后,频率的谐波平均值为2.8647 然而,当我有一个零频率(一个“DC”分量)时,我遇到了问题——谐波平均值只是零 现实生活中的问题是一组非常大的余弦,从零频率开始,一直到几GHz。大部分信号在频谱的一部分进行加权,

我有一个噪声信号的输出,保存为一组余弦

我有一组从
0
x
Hz的频率(x是一个大数字),还有一组相同大小的振幅

我想计算出频率的谐波平均值,当频率的权重是相应振幅的大小时

例如: 如果我有一组频率
[1,2,3]
和振幅
[10,100,1000]
(这样频率
1
的余弦具有振幅
10
,等等)。然后,频率的谐波平均值为
2.8647

然而,当我有一个零频率(一个“DC”分量)时,我遇到了问题——谐波平均值只是零

现实生活中的问题是一组非常大的余弦,从零频率开始,一直到几GHz。大部分信号在频谱的一部分进行加权,我想比较频谱的简单加权平均值和谐波平均值


解决这个问题的方法(这似乎是一个便宜的方法)是忽略零频率——它只是成千上万个频率中的一个。但是有正确的方法吗?

下面是加权调和平均值的公式:

应用于您的示例,它是:

x = 1:3;
w = logspace(1,3,3);  % [10 100 1000]
sum(w)/sum(w./x); % 2.8220
您可以看到,如果
x
值之一为
0
,分母中的和将是无限的。如果手动将此值的权重设置为
0
,则底部总和中会出现
0/0
情况(计算结果为
NaN
)。从技术上讲-在计算这类平均值时,如果没有得到
0
的结果,就不能有
x
0

我认为很明显,这不是处理直流信号的正确工具。为了获得一些有意义的信息,我想到了几件事:

  • 在这两种情况下,完全忽略直流信号听起来是合理的
  • 也许为了调和平均数的目的,你最好忽略它,然后再加上它,以便与简单平均数兼容

在一天结束时,你需要决定你想用它表达什么观点,然后相应地处理数据。

你如何计算你提到的调和平均值
harmmean(1:3)==1.6364
。嗨,魔鬼-我不够清楚:我正在计算加权调和平均值。每个数据点(频率)[1,2,3]都有一个权重(大小)[101001000](这些只是示例权重)。因此更相关的示例是frequenciesHi Devil的集合-是的,平均值是2.822(上面的数字一定是一些奇怪的复制和粘贴错误,我已经检查过!)。你的观点再次重申了我对分母无穷大的关注。我只是想知道是否有一种“正确”(或有意义)的方法来处理这些数据。我错误地忽略了0 Hz分量(在大多数情况下,它的权重非常小)。干杯,W