【问题标题】:function for calculate the rms average in matlabmatlab中计算均方根平均值的函数
【发布时间】:2020-12-08 03:44:05
【问题描述】:

我有下面显示的等式来计算存储在向量中的多个数字的平均值。 我想知道如何将这个函数放在 matlab 中,因为我很难翻译它,因为我不了解求和部分,也不了解 | x_n | ^ 2 部分

方程:

【问题讨论】:

  • 我很乐意提供帮助。你试过尝试吗?请发布任何尝试,以便我们了解您要采用的方法。

标签: matlab mat


【解决方案1】:

如果你只对计算RMS值感兴趣,你不需要自己实现RMS函数,你可以使用内置函数:

help rms

rms    Root mean squared value.
    For vectors, rms(X) is the root mean squared value in X. ...

如果您的输入是向量 x,您可能会执行类似的操作

x = [1, 2, 3, 5, 6, 12, 5, 6]
y = rms(x)

如果您尝试自己实现该功能,请通过在命令窗口中键入以下内容来查看rms 源代码

open rms

在源文件中应该有两种情况,具体取决于输入的数量(可能取决于您使用的 Matlab 版本)。

【讨论】:

    【解决方案2】:

    在 MATLAB 中处理求和

    可以使用 sum() 函数或使用 for 循环和迭代添加来完成求和。假设您从数学上理解计算过程,下面是一些将其转换为 MATLAB 代码的方法。

    方法 1:使用元素操作

    这里的向量x 是按元素平方(提高到指数2)。这意味着向量x 中的每个元素都取2 的幂。执行平方的代码部分是abs(x).^2。逐元素操作可以由操作前的. 表示。在这种情况下,操作是乘法,配置为逐元素乘法的* 变为.*

    %Random vector of integers%
    x = round(100*rand(1,100));
    
    N = length(x);
    x_RMS = sqrt((1/N)*sum(abs(x).^2));
    x_RMS
    

    方法 2:使用 For 循环

    使用 for 循环将方程分解为模拟求和过程的迭代步骤。这里向量x 中的每个值都被平方并添加到一个名为Accumulator 的变量中,该变量在迭代计算时保持总和的运行总和。

    %Random vector of integers%
    x = round(100*rand(1,100));
    
    N = length(x);
    Accumulator = 0;
    for n = 1: N
       Accumulator = Accumulator + abs(x(n))^2; 
    end
    
    x_RMS = sqrt((1/N)*Accumulator);
    x_RMS
    

    使用 MATLAB R2019b 运行

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 2021-02-14
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 2011-03-28
      相关资源
      最近更新 更多