// public static void AnalyzeMultiToneWave(double[] testWave) // { // // } /// <summary> /// 分析LogChirp波形 /// </summary> /// <param name="testData">测试波形</param> /// <param name="refWaveform">参考波形</param> /// <param name="sampleRate">采样率</param> /// <param name="responseX">频响的频率值</param> /// <param name="responseY">频响的功率值</param> /// <param name="thdX">谐波失真的频率值</param> /// <param name="thdY">谐波失真的值</param> public static void AnalyzeLogChripWave(double[] testData, Waveform.LogChirpWaveform refWaveform, double sampleRate, out double[] responseX, out double[] responseY, out double[] thdX, out double[] thdY) { LogChirpAnalyzer analyzer = new LogChirpAnalyzer(); ManagedAudioLibrary.LogChirpWaveform rawWaveform = refWaveform.GetRawWaveform() as ManagedAudioLibrary.LogChirpWaveform; analyzer.SetDataDelayCounts(AnalyzePathDelay(testData, refWaveform.GetWaveData())); analyzer.SetDataSampleRate(sampleRate); analyzer.SetReferenceWaveform(rawWaveform); analyzer.Analyze(testData, (uint)testData.Length); responseX = new double[analyzer.GetLengthOfResponse()]; responseY = new double[analyzer.GetLengthOfResponse()]; thdX = new double[analyzer.GetLengthOfThd()]; thdY = new double[analyzer.GetLengthOfThd()]; analyzer.GetThd(thdX, thdY); analyzer.GetResponse(responseX, responseY); }