Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将两个UIAccelerationValue';s_Ios_Accelerometer_Addition - Fatal编程技术网

Ios 将两个UIAccelerationValue';s

Ios 将两个UIAccelerationValue';s,ios,accelerometer,addition,Ios,Accelerometer,Addition,我不确定这是不是一个愚蠢的问题,所以请在这里容忍我。无论如何,我有两个UIAccelerationValue。当我单独NSLog他们的结果时,我分别得到如下值: 1. Value: -0.016186 2. Value2: -0.033460 但是,当我将两个UIAccelerationValue相加或相减时,得到的值如下: Value: -571.142049 Value: -1085.174017 Value: -2061.834754 Value: -3917.490156 Value

我不确定这是不是一个愚蠢的问题,所以请在这里容忍我。无论如何,我有两个
UIAccelerationValue
。当我单独
NSLog
他们的结果时,我分别得到如下值:

1. Value: -0.016186

2. Value2: -0.033460
但是,当我将两个
UIAccelerationValue
相加或相减时,得到的值如下:

Value: -571.142049
Value: -1085.174017
Value: -2061.834754
Value: -3917.490156
Value: -7443.235420
Value: -14142.151420
正如您所看到的,这些值一直呈指数增长


无论如何,如果我现在没有得到结果,我怎么能简单地将这两个
UIAccelerationValues
相加或相减呢?

我认为您正在存储加法/减法的结果,并且一次又一次地进行加法/减法,因此增加了较大的值


UIAccelerationValue只是一个双精度值(请参见UIAccelerator.h):

通过以下示例,您可以获得预期的输出:

UIAccelerationValue xOne = -0.016186;
UIAccelerationValue xTwo = -0.033460;

NSLog(@"%f", xOne + xTwo); // prints out -0.049646
NSLog(@"%f", xOne - xTwo); // prints out 0.017274

我认为您正在存储加法/减法的结果,并且正在一次又一次地进行加法/减法,因此增加了较大的值


UIAccelerationValue只是一个双精度值(请参见UIAccelerator.h):

通过以下示例,您可以获得预期的输出:

UIAccelerationValue xOne = -0.016186;
UIAccelerationValue xTwo = -0.033460;

NSLog(@"%f", xOne + xTwo); // prints out -0.049646
NSLog(@"%f", xOne - xTwo); // prints out 0.017274

我不是UIC加速方面的专家,但这里有一个示例代码。希望能有帮助

#define kAccelerometerFrequency        50.0 //Hz
#define kFilteringFactor 0.1


UIAccelerationValue gravX;
UIAccelerationValue gravY;
UIAccelerationValue gravZ;
gravX = (acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor));
gravY = (acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor));
gravZ = (acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor));

UIAccelerationValue accelX = acceleration.x - ( (acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor)) );

UIAccelerationValue accelY = acceleration.y - ( (acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor)) );
UIAccelerationValue accelZ = acceleration.z - ( (acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor)) );
accelX *= 9.81f;
accelY *= 9.81f;
accelZ *= 9.81f;
accelX = [self tendToZero:accelX];
accelY = [self tendToZero:accelY];
accelZ = [self tendToZero:accelZ];

UIAccelerationValue vector = sqrt(pow(accelX,2)+pow(accelY,2)+pow(accelZ, 2));
UIAccelerationValue acce = vector - prevVelocity;
UIAccelerationValue velocity = (((acce - prevAcce)/2) * (1/kAccelerometerFrequency)) + prevVelocity;

NSLog(@"X %g Y %g Z %g, Vector %g, Velocity %g",accelX,accelY,accelZ,vector,velocity);

我不是UIC加速方面的专家,但这里有一个示例代码。希望能有帮助

#define kAccelerometerFrequency        50.0 //Hz
#define kFilteringFactor 0.1


UIAccelerationValue gravX;
UIAccelerationValue gravY;
UIAccelerationValue gravZ;
gravX = (acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor));
gravY = (acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor));
gravZ = (acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor));

UIAccelerationValue accelX = acceleration.x - ( (acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor)) );

UIAccelerationValue accelY = acceleration.y - ( (acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor)) );
UIAccelerationValue accelZ = acceleration.z - ( (acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor)) );
accelX *= 9.81f;
accelY *= 9.81f;
accelZ *= 9.81f;
accelX = [self tendToZero:accelX];
accelY = [self tendToZero:accelY];
accelZ = [self tendToZero:accelZ];

UIAccelerationValue vector = sqrt(pow(accelX,2)+pow(accelY,2)+pow(accelZ, 2));
UIAccelerationValue acce = vector - prevVelocity;
UIAccelerationValue velocity = (((acce - prevAcce)/2) * (1/kAccelerometerFrequency)) + prevVelocity;

NSLog(@"X %g Y %g Z %g, Vector %g, Velocity %g",accelX,accelY,accelZ,vector,velocity);

UIAccelerationValue只是一个双精度<代码>类型定义双UIAccelerationValue你们能详细说明你们的问题吗?若你们能发布一些有问题的代码,你们会得到更好的答案。正如人们提到的,UIAccelerationValue是一个双重值。你是从连续读数中加上uiacaction.X | Y | Z,还是仅仅读取uiacleration并将两个轴相加或相减?第一个是有意义的,因为正如文档中提到的,传感器有噪音,最好的读数是通过使用平均值或运行平均值来获得的。UIAccelerationValue只是一个双倍值<代码>类型定义双UIAccelerationValue你们能详细说明你们的问题吗?若你们能发布一些有问题的代码,你们会得到更好的答案。正如人们提到的,UIAccelerationValue是一个双重值。你是从连续读数中加上uiacaction.X | Y | Z,还是仅仅读取uiacleration并将两个轴相加或相减?第一个是有意义的,因为正如文档中提到的,传感器有噪声,最好的读数是通过使用平均值或运行平均值来获得的。NSLog(@“%f”,xOne-xTwo);//打印出0.017274NSLog(@“%f”,xOne-xTwo);//打印出0.017274