Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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
Iphone 从数组中提取最大元素_Iphone_Objective C_Core Audio - Fatal编程技术网

Iphone 从数组中提取最大元素

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

我从音频文件中提取样本以绘制波形-我已经用样本生成了一个数组(下面代码中的waveDisplayArray)

我想从这个waveDisplayArray中提取最大的值,最好的方法是什么

(我最初定义的waveDisplayArray如下:int waveDisplayArray[280]={0};
我不确定这是最好的解决方法)

提前感谢:)


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);