Iphone 从数组中提取最大元素
我从音频文件中提取样本以绘制波形-我已经用样本生成了一个数组(下面代码中的waveDisplayArray) 我想从这个waveDisplayArray中提取最大的值,最好的方法是什么 (我最初定义的waveDisplayArray如下:int waveDisplayArray[280]={0};Iphone 从数组中提取最大元素,iphone,objective-c,core-audio,Iphone,Objective C,Core Audio,我从音频文件中提取样本以绘制波形-我已经用样本生成了一个数组(下面代码中的waveDisplayArray) 我想从这个waveDisplayArray中提取最大的值,最好的方法是什么 (我最初定义的waveDisplayArray如下:int waveDisplayArray[280]={0}; 我不确定这是最好的解决方法) 提前感谢:) for(int y=0;y我只编辑并发布了相关部分,以查找最大值 int i; float largest = 0; for (i = 0; i<n
我不确定这是最好的解决方法) 提前感谢:)
for(int y=0;y我只编辑并发布了相关部分,以查找最大值
int i;
float largest = 0;
for (i = 0; i<numberOfPixels; i++)
{
//NSLog(@"i is: %i", i);
int j;
int numberOfSamplesPerPixel = bufferSize/numberOfPixels;
float average = 0;
for (j=i*numberOfSamplesPerPixel; j<(i+1)*numberOfSamplesPerPixel; j++){
average += frame[j];
average = average/numberOfSamplesPerPixel;
}
waveDisplayArray[i] = average;
if( largest < average )
{
largest = average;
}
NSLog(@"Average %i is %f",i,average);
NSLog(@"waveDisplay Array %i: %f",i, waveDisplayArray[i]);
}
NSLog(@"Largest %f",largest);
inti;
最大浮点数=0;
对于(i=0;i你想过用苹果来做这个吗?例如,有一个函数可以计算整个向量(数组)的最大值。
一行替换for循环:
vDSP_maxmgv(&maxValue,1,waveDisplayArray,280);
还有一些有用的函数用于计算平均值、最小值或其他值。这应该会快得多。您可以使用NSSortDescriptor和取所有值中的第一个值对数组进行排序。NSSortDescriptor*desc=[[NSSortDescriptor alloc]initWithKey:@“filename”升序:是选择器:@selector(sortByFilenames:)]autorelease];[myMutableArray SortarrayingDescriptors:[NSArray arrayWithObject:desc]];谢谢Aadhira,它工作得很好,给了我最大的值。我现在遇到的问题是当我试图将数组中的每个元素除以最大值时。我设置了一个新的循环来处理这个int k;for(k=0;kwaveDisplayArray
是一个整数数组。无论它有什么元素,如果你试图用数组中最大的值除以元素,它都会变成零。例如,如果你有使用元素2,4,6,3生成一个数组。如果将每个元素除以6并赋值,所有元素都将变为零。我想如果使用float
数组,情况可能会有所不同。希望这能有所帮助。再次感谢Aadhira,这真的帮了我大忙!我的知识中有一些空白需要解决:)
int i;
float largest = 0;
for (i = 0; i<numberOfPixels; i++)
{
//NSLog(@"i is: %i", i);
int j;
int numberOfSamplesPerPixel = bufferSize/numberOfPixels;
float average = 0;
for (j=i*numberOfSamplesPerPixel; j<(i+1)*numberOfSamplesPerPixel; j++){
average += frame[j];
average = average/numberOfSamplesPerPixel;
}
waveDisplayArray[i] = average;
if( largest < average )
{
largest = average;
}
NSLog(@"Average %i is %f",i,average);
NSLog(@"waveDisplay Array %i: %f",i, waveDisplayArray[i]);
}
NSLog(@"Largest %f",largest);