public void TestInspectionSpectral(double analysisLength, double windowLength, DetectorWindowType windowType, double windowOverlap, int zeroPadding, int fs, bool logScale, double freqMin, double freqMax, string expectedResults)
        {
            var parameters = new InspectionAnalysisParameters();

            parameters.AnalysisLength = analysisLength;
            parameters.WindowLength   = windowLength;
            parameters.WindowType     = windowType;
            parameters.WindowOverlap  = windowOverlap;
            parameters.ZeroPadding    = zeroPadding;
            parameters.Fs             = fs;
            parameters.LogScale       = logScale;
            parameters.FreqMax        = freqMax;
            parameters.FreqMin        = freqMin;

            var result = Functions.InspectionSpectral(data, parameters);

            NUnit.Framework.Assert.AreEqual(result.X.Count, 46);
            NUnit.Framework.Assert.AreEqual(result.Y.Count, 2);
            NUnit.Framework.Assert.AreEqual(result.Y[0].Count, 46);
            NUnit.Framework.Assert.AreEqual(result.Ylabel, expectedResults);
            NUnit.Framework.Assert.AreEqual(result.Xlabel, "F (Hz)");
        }
Beispiel #2
0
        public static InspectionAnalysisResults InspectionSpectral(List <List <double> > data, InspectionAnalysisParameters parameters)
        {
            var fs         = parameters.Fs;
            int N          = (int)Math.Round(parameters.AnalysisLength * fs);
            var Nw         = Math.Round(parameters.WindowLength * fs);
            var Nover      = Math.Round(parameters.WindowOverlap * fs);
            var LS         = parameters.LogScale;
            var windowtype = parameters.WindowType;

            var freqMin = 0d;
            var freqMax = 0d;

            if (parameters.FreqMin != null)
            {
                freqMin = (double)parameters.FreqMin;
            }
            if (parameters.FreqMax != null)
            {
                freqMax = (double)parameters.FreqMax;
            }
            var Nzp = 0;

            if (parameters.ZeroPadding != null)
            {
                Nzp = (int)parameters.ZeroPadding;
            }

            List <List <double> > dataInFreqDomain;
            List <double>         freqAll;

            ComputePSD(data, fs, N, Nw, Nover, Nzp, windowtype, out dataInFreqDomain, out freqAll);

            InspectionAnalysisResults re = CutPSDbyFreq(LS, freqMin, freqMax, dataInFreqDomain, freqAll);

            re.Xlabel = "F (Hz)";
            if (LS)
            {
                re.Ylabel = "PSD (dB)";
            }
            else
            {
                re.Ylabel = "PSD";
            }
            //need to do some argument validation
            //such as the window size need to be smaller than the actual signal length
            //overlap size need to be smaller than window size

            return(re);
        }
 public InspectionAnalysisParametersViewModel()
 {
     _model = new InspectionAnalysisParameters();
 }