C# 用于创建'的本机数组、堆栈、ArrayList或列表;低通';滤波器
尝试创建一种低通滤波器,我不断平均前10个浮点值。不确定是使用内置数组(本机.NET数组)、.NET堆栈运算符,还是ArrayList或List 在伪代码中,我需要 1-定义包含10个浮点数的数组或堆栈 2-每次更新都会向数组、堆栈和列表推送一个新值 3-检查长度,如果大于10,则从数组、堆栈和列表中删除第一个或最早的浮点值 4-获取数组、堆栈和列表中所有浮点值的平均值 5-重复步骤2-4 第一个问题我应该使用内置数组、堆栈、ArrayList还是列表?我注意到在堆栈文档中没有从堆栈中删除最旧(底部)项的方法,但可能我遗漏了一些东西 我需要的是(仅Javascript)数组类的所有功能,但在C#中除外 第二,任何人都可以使用这两种方法来帮助理解实际语法吗?感谢您的帮助 堆栈是后进先出(后进先出) 如果要删除最旧的值,则需要使用队列(先进先出) 堆栈是后进先出(后进先出) 如果要删除最旧的值,则需要使用队列(先进先出) 您可以使用泛型集合来存储值:C# 用于创建'的本机数组、堆栈、ArrayList或列表;低通';滤波器,c#,arrays,unity3d,arraylist,C#,Arrays,Unity3d,Arraylist,尝试创建一种低通滤波器,我不断平均前10个浮点值。不确定是使用内置数组(本机.NET数组)、.NET堆栈运算符,还是ArrayList或List 在伪代码中,我需要 1-定义包含10个浮点数的数组或堆栈 2-每次更新都会向数组、堆栈和列表推送一个新值 3-检查长度,如果大于10,则从数组、堆栈和列表中删除第一个或最早的浮点值 4-获取数组、堆栈和列表中所有浮点值的平均值 5-重复步骤2-4 第一个问题我应该使用内置数组、堆栈、ArrayList还是列表?我注意到在堆栈文档中没有从堆栈中删除最旧(
var queue = new Queue<float>();
queue.Enqueue(1.0f); // pushes new item
queue.Dequeue(); // removes oldest item
您可以使用泛型集合来存储值:
var queue = new Queue<float>();
queue.Enqueue(1.0f); // pushes new item
queue.Dequeue(); // removes oldest item
您可能错过了队列数据结构。使用它,您可以将新元素放在末尾,并从前面删除旧元素 此外,如果经常有10个元素,则不需要查看数组中的所有元素来计算平均值。知道以前的平均值后,可以按如下方式计算新的平均值:
newAvg = oldAvg + (newElem - deletedElem)/10;
或者更简短地说:
avg += (newElem - deletedElem)/10;
您可能错过了队列数据结构。使用它,您可以将新元素放在末尾,并从前面删除旧元素 此外,如果经常有10个元素,则不需要查看数组中的所有元素来计算平均值。知道以前的平均值后,可以按如下方式计算新的平均值:
newAvg = oldAvg + (newElem - deletedElem)/10;
或者更简短地说:
avg += (newElem - deletedElem)/10;
从OP的步骤#3开始,队列听起来像是以0个元素开始的,这意味着队列中不会总是有10个元素,但我同意队列是正确的数据结构。从OP的步骤#3开始,队列听起来像是以0个元素开始的,这意味着队列中不会总是有10个元素,但我同意队列是正确的数据结构。