MCPcopy Create free account
hub / github.com/Kitware/VTK / ProcessColumn

Method ProcessColumn

Filters/General/vtkEqualizerFilter.cxx:359–450  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

357
358//------------------------------------------------------------------------------
359void vtkEqualizerFilter::ProcessColumn(
360 vtkDataArray* array, vtkTable* spectrumTable, vtkTable* resultTable, vtkTable* normalizedTable)
361{
362 // FFT
363 auto spectrum = this->Internal->GetSpectrum(array);
364 if (spectrum.empty())
365 {
366 vtkErrorMacro(<< "Spectrum is empty: " << array->GetName());
367 return;
368 }
369
370 std::vector<double> normSpectrum = this->Internal->GetNormalizedSpectrum(array);
371 if (normSpectrum.empty())
372 {
373 vtkErrorMacro(<< "Normalized spectrum is empty: " << array->GetName());
374 return;
375 }
376 // end FFT
377
378 // modify by equalizer
379 auto modifiers = this->Internal->GetModifiers(this->SamplingFrequency);
380 for (const auto& modifier : modifiers)
381 {
382 spectrum[modifier.first].r *= modifier.second;
383 spectrum[modifier.first].i *= modifier.second;
384 spectrum[this->Internal->SpectrumSize - modifier.first - 1].r *= modifier.second;
385 spectrum[this->Internal->SpectrumSize - modifier.first - 1].i *= modifier.second;
386
387 normSpectrum[modifier.first] *= modifier.second;
388 }
389
390 // fill spectrum table
391 std::vector<double> freqArray =
392 vtkFFT::RFftFreq(this->Internal->SpectrumSize, 1.0 / this->SamplingFrequency);
393
394 vtkSmartPointer<vtkDoubleArray> freqColumn = vtkSmartPointer<vtkDoubleArray>::New();
395 freqColumn->SetNumberOfComponents(1);
396 freqColumn->SetNumberOfTuples(this->Internal->GetHalfSpectrumSize());
397 freqColumn->SetName("Frequency");
398 for (vtkIdType spectrumId = 0; spectrumId < this->Internal->GetHalfSpectrumSize(); ++spectrumId)
399 {
400 freqColumn->SetValue(spectrumId, freqArray.at(spectrumId));
401 }
402
403 spectrumTable->AddColumn(freqColumn);
404 normalizedTable->AddColumn(freqColumn);
405
406 vtkSmartPointer<vtkDoubleArray> leadArray = vtkSmartPointer<vtkDoubleArray>::New();
407 leadArray->SetNumberOfComponents(1);
408 leadArray->SetNumberOfTuples(this->Internal->GetHalfSpectrumSize());
409 leadArray->SetName(array->GetName());
410
411 vtkSmartPointer<vtkDoubleArray> normalizedArray = vtkSmartPointer<vtkDoubleArray>::New();
412 normalizedArray->SetNumberOfComponents(1);
413 normalizedArray->SetNumberOfTuples(this->Internal->GetHalfSpectrumSize());
414 normalizedArray->SetName(array->GetName());
415
416 double modifier = pow(10, 0.05 * this->SpectrumGain);

Callers

nothing calls this directly

Calls 12

GetModifiersMethod · 0.80
CheckAbortMethod · 0.80
NewFunction · 0.50
powFunction · 0.50
emptyMethod · 0.45
GetNameMethod · 0.45
SetNumberOfComponentsMethod · 0.45
SetNumberOfTuplesMethod · 0.45
SetNameMethod · 0.45
SetValueMethod · 0.45
atMethod · 0.45
AddColumnMethod · 0.45

Tested by

no test coverage detected