【发布时间】:2020-12-08 03:44:05
【问题描述】:
【问题讨论】:
-
我很乐意提供帮助。你试过尝试吗?请发布任何尝试,以便我们了解您要采用的方法。
【问题讨论】:
如果你只对计算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 版本)。
【讨论】:
可以使用 sum() 函数或使用 for 循环和迭代添加来完成求和。假设您从数学上理解计算过程,下面是一些将其转换为 MATLAB 代码的方法。
这里的向量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
使用 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 运行
【讨论】: