我正在创建一个音叉应用程序,您可以将 iPhone 轻拍到另一只手的手掌上,或者轻拍到柔软的表面上,以设置音叉的声音。
所以我想检测每个“凹凸”中包含的能量
(编辑:删除了大量的gumpf)
谁能帮我破解这个吗?
我创建了一个加速计变量:
UIAccelerometer *objAccelerometer;
Run Code Online (Sandbox Code Playgroud)
我正在关联sharedAccelerometer实例:
objAccelerometer = [UIAccelerometer sharedAccelerometer];
objAccelerometer.delegate = self;
Run Code Online (Sandbox Code Playgroud)
当我释放此视图(加载不同的视图)时,加速计实例会导致程序死亡.(如果我已将其注释掉,我可以在没有问题的情况下在视图之间切换).
我有一个与NSTimer类似的问题,但是一旦我打电话:
[myTimer invalidate];
Run Code Online (Sandbox Code Playgroud)
(在发布和切换视图之前)一切正常.
我应该如何正确释放代表或解除分配或释放加速度计?
我问他们每秒50Hz/50次数据.当我突然将设备在x轴上翻转90度而设备在显示器朝上的桌子上是平的时,这些值会非常缓慢地移动到该位置的"目标"值.
现在奇怪的是:如果我提高测量速率,在突然将设备翻转90度时,该值将更快地移动到该新值.但是,如果我每秒只询问一次新值,则需要很长时间才能达到目标值.这可能是什么原因?
我没有做任何类型的数据聚合,也没有积累任何东西.我只是做一些简单的过滤来摆脱噪音.我的方法看起来像这样:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
// Use a basic low-pass filter to only keep the gravity in the accelerometer values for the X and Y axes
// accelerationX is an instance variable
accelerationX = acceleration.x * 0.05 + accelerationX * (1.0 - 0.05);
// round
int i = accelerationX * 100;
float clippedAccelerationValue = i;
clippedAccelerationValue /= 100;
[self moveViews:clippedAccelerationValue];
}
Run Code Online (Sandbox Code Playgroud)
稍后,在我的-moveViews:方法中,我这样做:
-(IBAction)moveSceneForPseudo3D:(float)accelerationValue {
if(fabs(lastAccelerationValue - accelerationValue) > 0.02) { // some little treshold to prevent …Run Code Online (Sandbox Code Playgroud) 我有一个类名,因为myClassCalculate具有以下方法
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
NSLog(@"Accelerometer is called");
}
Run Code Online (Sandbox Code Playgroud)
我正在制作对象
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
myObject = [[myClassCalculate alloc] init];
Run Code Online (Sandbox Code Playgroud)
现在当应用程序进入后台时,我想要这个
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
Run Code Online (Sandbox Code Playgroud)
我该怎么做,以便在app后台调用此方法
谢谢
我是android的新手,正在研究加速度计.我想每秒收集20个x,y,z样本,为此我可以使用以下内容吗?int rate中的registerListener(SensorEventListener监听器,传感器传感器,int rate)可以使用3000000(微秒),这样我每3000000(微秒)或3秒就得到一个x,y,z值,所以它就像registerListener(这个,Accelerometer,3000000); 并在1秒内得到20个x,y,z样本.如果我错了可以有人建议我如何解决这个问题吗?
我使用Apple的Accelerate Framework(在iOS设备上执行)成功实现了采用数组数据并对其运行快速傅里叶变换的代码.
我现在的问题是频率轴的比例是多少?结果在某些频率范围内具有预期的峰值,但我不确定频率应该是多少.Accelerate Framework的FFT函数接收一个数组并吐出一个具有相同(或更多)数据点的数组.是否假设所有这些点在时间上是等间隔的?它不采用采样频率或时间变量作为输入.频率轴的比例(即每个点上的频率增量)只是采样周期除以2*Pi(或类似的东西?)我在文档中找不到很多信息.我一直在网上寻找类似的问题,但没有找到任何东西.
这在某种程度上是一个数学问题,尽管它在很大程度上取决于Accelerate Framework的实现.
谢谢
我在互联网上读到,加速度计在低频时会受到1/f噪声的影响,在高频时会受到高斯噪声的影响.但我不明白他们指的是什么频率?它是加速度计的采样频率吗?或手机处理器的工作频率(我在Android手机中寻找MEMS加速度计)?或其他一些信号的频率(如果是,那么是什么样的信号)?
我想创建一个项目,读取用户的手势(基于加速度计)并识别它,我搜索了很多但我发现的所有都太旧了,我既没有分类也没有识别问题,我将使用1美元识别器或HMM ,我只是想知道如何使用加速度计读取用户的手势.
加速度计数据(x,y,z值)是否足够,或者我应该使用其他数据,如姿态数据(滚动,俯仰,偏航),陀螺仪数据或幅度数据,我甚至不理解其中的任何人如此解释什么这些传感器确实有用.
提前致谢 !
我使用代码将Raspberry Pi与加速度计连接:
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
#include "LSM9DS0.h"
void readBlock(uint8_t command, uint8_t size, uint8_t *data);
void selectDevice(int file, int addr);
void readACC(int *a);
void writeAccReg(uint8_t reg, uint8_t value);
void enableIMU();
int file;
void readBlock(uint8_t command, uint8_t size, uint8_t *data)
{
int result = i2c_smbus_read_i2c_block_data(file, command, size, data);
if (result != size)
{
printf("Failed to read block from I2C.");
exit(1);
}
}
void selectDevice(int file, int addr)
{
if (ioctl(file, I2C_SLAVE, addr) < 0) { …Run Code Online (Sandbox Code Playgroud) 我正在开发类似优步的应用程序,如果车辆停止移动(或移动,我们需要计算等待时间)
我尝试使用GPS定位速度,但它似乎没有帮助.然后我们尝试了Activity识别API,它也没有立即更新.
有没有其他方法可以实现这一目标?请注意它不是关于检测速度.它涉及检测车辆是否在移动.
谢谢,Aneef
accelerometer ×10
iphone ×4
android ×2
ios ×2
bump ×1
c ×1
cocoa-touch ×1
detect ×1
fft ×1
geolocation ×1
ios6 ×1
math ×1
noise ×1
raspberry-pi ×1
runloop ×1
sampling ×1
uikit ×1