簡體   English   中英

function 用於計算 matlab 中的均方根平均值

[英]function for calculate the rms average in matlab

我有下面顯示的等式來計算存儲在向量中的多個數字的平均值。 我想知道如何將這個 function 放在 matlab 中,因為我很難翻譯它,因為我不理解求和部分和 | x_n | ^ 2 部分

方程:

公式

如果你只對計算 RMS 值感興趣,你不需要自己實現 RMS function,你可以使用內置的 function:

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)

相反,如果您嘗試自己實施 function,請通過在命令 window 中鍵入以下內容來查看rms源代碼

open rms

在源文件中應該有兩種情況,具體取決於輸入的數量(可能取決於您使用的 Matlab 的版本)。

在 MATLAB 中處理求和

可以使用sum() function 或使用 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 運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM