Objective C:重新填充大小的数组
Objective C: Array with size repopulate
我需要一个可以存储 3 个值并计算其平均值的数组。
3 秒后数组已满,我想刷新从数组的 begin [0] 开始的每个值。所以数组每 3 秒更新一次,我有最新的平均值。目前,当我添加一个对象时,数组会不断增长。
这是我目前的代码:
//Inside function which loops every second so I can access myValue
self.myArray = [[NSMutableArray alloc] initWithCapacity:3];
[self.myArray addObject:[NSNumber numberWithDouble:myValue]];
for(int i = 0; i < self.myArray.count; i++) {
NSLog(@"Array %d: %@", i, self.myArray[i]);
}
输出
Array 0: 2
Array 1: 4
Array 2: 5
Array 3: 6
Array 4: 1
只需检查数组的大小是否大于 3。如果是,请删除最早的元素。
这是一个可能的实现:
分配并初始化数组:
self.myArray = [[NSMutableArray alloc] init];
插入一个新对象并删除最旧的对象:
[self.myArray insertObject:object atIndex:0];
if ( self.myArray.count > 3 )
{
[self.myArray removeLastObject];
}
您似乎在尝试计算每秒更新一次的 运行 平均值。这是一个可能适合您的简单替代方法。
初始化平均值:
runningAverage = myValue;
循环内部:
const int WEIGHT = 3;
runningAverage = (runningAverage * (WEIGHT - 1) + myValue) / WEIGHT;
输出结果如下:
输入:1、2、3、4、101、6、7、8
(使用数组)
输出:-, -, 2, 3, 36, 37, 38, 7
(使用 运行 平均值)
输出:1、1.33、1.88、2.59、35.4、25.6、19.4、15.6
我需要一个可以存储 3 个值并计算其平均值的数组。 3 秒后数组已满,我想刷新从数组的 begin [0] 开始的每个值。所以数组每 3 秒更新一次,我有最新的平均值。目前,当我添加一个对象时,数组会不断增长。 这是我目前的代码:
//Inside function which loops every second so I can access myValue
self.myArray = [[NSMutableArray alloc] initWithCapacity:3];
[self.myArray addObject:[NSNumber numberWithDouble:myValue]];
for(int i = 0; i < self.myArray.count; i++) {
NSLog(@"Array %d: %@", i, self.myArray[i]);
}
输出
Array 0: 2
Array 1: 4
Array 2: 5
Array 3: 6
Array 4: 1
只需检查数组的大小是否大于 3。如果是,请删除最早的元素。
这是一个可能的实现:
分配并初始化数组:
self.myArray = [[NSMutableArray alloc] init];
插入一个新对象并删除最旧的对象:
[self.myArray insertObject:object atIndex:0];
if ( self.myArray.count > 3 )
{
[self.myArray removeLastObject];
}
您似乎在尝试计算每秒更新一次的 运行 平均值。这是一个可能适合您的简单替代方法。
初始化平均值:
runningAverage = myValue;
循环内部:
const int WEIGHT = 3;
runningAverage = (runningAverage * (WEIGHT - 1) + myValue) / WEIGHT;
输出结果如下:
输入:1、2、3、4、101、6、7、8
(使用数组) 输出:-, -, 2, 3, 36, 37, 38, 7
(使用 运行 平均值) 输出:1、1.33、1.88、2.59、35.4、25.6、19.4、15.6