34 lines
901 B
C#
34 lines
901 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace 测试Scottplot
|
|
{
|
|
|
|
|
|
public class RmsCalculator
|
|
{
|
|
public List<double> CalculatePeriodicRMS(List<double> data, double sampleRate, double signalFrequency)
|
|
{
|
|
int pointsPerCycle = (int)(sampleRate / signalFrequency);
|
|
List<double> rmsValues = new List<double>();
|
|
|
|
for (int start = 0; start < data.Count; start += pointsPerCycle)
|
|
{
|
|
int end = Math.Min(start + pointsPerCycle, data.Count);
|
|
var cycleData = data.GetRange(start, end - start);
|
|
|
|
double sumSquares = cycleData.Sum(x => x * x);
|
|
double rms = Math.Sqrt(sumSquares / cycleData.Count);
|
|
rmsValues.Add(rms);
|
|
}
|
|
return rmsValues;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|