CLAM-Development  1.4.0
DataUtil.cxx
Go to the documentation of this file.
1 #include "DataUtil.hxx"
2 #include <iostream>
3 
4 namespace CLAM
5 {
6 
7 void DataUtil::CopyFrameMembers(Frame& sourceFrame,
8  Frame& targetFrame)
9 {
10  targetFrame.SetCenterTime(sourceFrame.GetCenterTime());
11 
12  // Copy SpectralPeakArray data
13  SpectralPeakArray& sourceSpectralPeaks = sourceFrame.GetSpectralPeakArray();
14  SpectralPeakArray& targetSpectralPeaks = targetFrame.GetSpectralPeakArray();
15  CopySpectralPeakArraysMembers(sourceSpectralPeaks, targetSpectralPeaks);
16 
17  // Copy ResidualSpectrum data
18  // (I would have moved this code into Spectrum as a CopyMembers method
19  // but that class is so convoluted that it would be a massive headache
20  // to make a general copy members class.)
21  Spectrum& sourceResidualSpectrum = sourceFrame.GetResidualSpec();
22  Spectrum& targetResidualSpectrum = targetFrame.GetResidualSpec();
23  CopyResidualSpectrumsMembers(sourceResidualSpectrum, targetResidualSpectrum);
24 
25 }
26 
28  SpectralPeakArray& targetSpectralPeaks )
29 {
30  targetSpectralPeaks.AddAll();
31  targetSpectralPeaks.UpdateData();
32 
33  targetSpectralPeaks.CopyMembers(sourceSpectralPeaks);
34 }
35 
36 void DataUtil::CopyResidualSpectrumsMembers(Spectrum& sourceResidualSpectrum,
37  Spectrum& targetResidualSpectrum)
38 {
39  targetResidualSpectrum.AddAll();
40  targetResidualSpectrum.UpdateData();
41 
42  int size = sourceResidualSpectrum.GetSize();
43  targetResidualSpectrum.SetSize( size );
44  Array<Complex>& srcComplexBuffer = sourceResidualSpectrum.GetComplexArray();
45  Array<Complex>& targetComplexBuffer = targetResidualSpectrum.GetComplexArray();
46  for (int r=0; r < size; r++)
47  {
48  targetComplexBuffer[r] = srcComplexBuffer[r];
49  }
50 }
51 
52 bool DataUtil::CheckMembers(Frame& sourceFrame,
53  Frame& targetFrame)
54 {
55  // Copy SpectralPeakArray data
56  SpectralPeakArray& sourceSpectralPeaks = sourceFrame.GetSpectralPeakArray();
57  SpectralPeakArray& targetSpectralPeaks = targetFrame.GetSpectralPeakArray();
58 
59  // CopySpectralPeakArraysMembers(sourceSpectralPeaks, targetSpectralPeaks);
60  DataArray& srcFreqBuffer = sourceSpectralPeaks.GetFreqBuffer();
61  DataArray& srcMagBuffer = sourceSpectralPeaks.GetMagBuffer();
62  DataArray& srcPhaseBuffer = sourceSpectralPeaks.GetPhaseBuffer();
63  DataArray& srcBinPosBuffer = sourceSpectralPeaks.GetBinPosBuffer();
64  DataArray& srcBinWidthBuffer = sourceSpectralPeaks.GetBinWidthBuffer();
65  IndexArray& srcIndexArray = sourceSpectralPeaks.GetIndexArray();
66 
67  DataArray& targetFreqBuffer = targetSpectralPeaks.GetFreqBuffer();
68  DataArray& targetMagBuffer = targetSpectralPeaks.GetMagBuffer();
69  DataArray& targetPhaseBuffer = targetSpectralPeaks.GetPhaseBuffer();
70  DataArray& targetBinPosBuffer = targetSpectralPeaks.GetBinPosBuffer();
71  DataArray& targetBinWidthBuffer = targetSpectralPeaks.GetBinWidthBuffer();
72  IndexArray& targetIndexArray = targetSpectralPeaks.GetIndexArray();
73 
74  int numberOfPeaks = sourceSpectralPeaks.GetnPeaks();
75  for (int r=0; r < numberOfPeaks;r++)
76  {
77  // get frequency , mag and phase
78  if (targetFreqBuffer[r] != srcFreqBuffer[r] ||
79  targetMagBuffer[r] != srcMagBuffer[r] ||
80  targetPhaseBuffer[r] != srcPhaseBuffer[r] ||
81  targetBinPosBuffer[r] != srcBinPosBuffer[r] ||
82  targetBinWidthBuffer[r] != srcBinWidthBuffer[r] ||
83  targetIndexArray[r] != srcIndexArray[r])
84  return false;
85  }
86 
87  // Copy ResidualSpectrum data
88  // (I would have moved this code into Spectrum as a CopyMembers method
89  // but that class is so convoluted that it would be a massive headache
90  // to make a general copy members class.)
91  Spectrum& sourceResidualSpectrum = sourceFrame.GetResidualSpec();
92  Spectrum& targetResidualSpectrum = targetFrame.GetResidualSpec();
93  int size = sourceResidualSpectrum.GetSize();
94  targetResidualSpectrum.SetSize( size );
95  Array<Complex>& srcComplexBuffer = sourceResidualSpectrum.GetComplexArray();
96  Array<Complex>& targetComplexBuffer = targetResidualSpectrum.GetComplexArray();
97  for (int r=0; r < size; r++)
98  {
99  if (targetComplexBuffer[r] != srcComplexBuffer[r])
100  return false;
101  }
102 
103  return true;
104 }
105 
107 {
108  DataArray& srcFreqBuffer = sourceSpectralPeaks.GetFreqBuffer();
109  DataArray& srcMagBuffer = sourceSpectralPeaks.GetMagBuffer();
110 
111  int numberOfPeaks = sourceSpectralPeaks.GetnPeaks();
112  std::cout << "Printing out the contents of the spectral peak array." << std::endl;
113  for (int r=0; r < numberOfPeaks;r++)
114  {
115  // get frequency , mag and phase
116  std::cout << "Frequency: " << srcFreqBuffer[r];
117  std::cout << ", Magnitude: " << srcMagBuffer[r] << std::endl;
118  }
119  std::cout << "Done." << std::endl;
120 }
121 
122 } // end namespace CLAM
123 
124