private static void WriteAdditionalDataToCells(AdditionalSignalData inputData, Worksheet worksheet, int columnIndex)
 {
     if (inputData != null)
     {
         worksheet.Cells[1, columnIndex].NumberFormat = "@";
         worksheet.Cells[1, columnIndex].Value        = "factor: " + inputData.ModulationDepthFactor.ToString();
     }
 }
        static void Main(string[] args)
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Pamietaj! Czestotliwosc probkowania musi byc co najmniej 2x wieksza niz najwyzsza w sygnale!!!!!!");
            }


            /*
             *
             * Ustawienia globalne
             *
             */
            SamplesGenerator.GlobalSamplingRate          = 440;
            SamplesGenerator.GlobalSimulationTimeSeconds = 1;

            /*
             * Tworzenie sygnalu informacyjnego
             */
            var signal1 = SamplesGenerator.GenerateSamples(ampl: 3, frequency: 7, out SignalData signalData1, phase: 0);
            var signal2 = SamplesGenerator.GenerateSamples(ampl: 9, frequency: 14, out SignalData signalData2, phase: 0);

            var summedInformationSignal = SamplesGenerator.Sum(signal1, signal2);

            /*
             * Tworzenie sygnalu nosnego z o wiele wieksza czestotliwoscia
             */
            var carrierSignal = SamplesGenerator.GenerateCarrierSignal(ampl: 20, frequency: 200, out SignalData carrierSignalData, 0);

            /*
             * Wygenerowanie zmodulowanego sygnalu z uwzglednieniem wsp. glebokosci modulacji
             */
            double modulationDepthFactor = 2;
            var    modulatedSignal       = AmplitudeModifier.Modulate(summedInformationSignal, carrierSignal, modulationDepthFactor);

            /*
             * Transformata zmodulowanego i zapisanie do excela
             */
            Fourier.DiscreteTransform(modulatedSignal, out var fourier_modulated);

            /*
             * Wprowadzenie danych do EXCEL'A
             */
            ExcelWriter.WriteSamples(CustomFullPath, "Sygnal1.xlsx", signal1, signalData1);
            ExcelWriter.WriteSamples(CustomFullPath, "Sygnal2.xlsx", signal2, signalData2);
            ExcelWriter.WriteSamples(CustomFullPath, "SygnalNosny.xlsx", carrierSignal, carrierSignalData);
            ExcelWriter.WriteSamples(CustomFullPath, "SygnalInformacyjny.xlsx", summedInformationSignal, signalData1, signalData2, null, null, signal1, signal2);

            AdditionalSignalData additionalData = new AdditionalSignalData();

            additionalData.ModulationDepthFactor = modulationDepthFactor;
            ExcelWriter.WriteSamples(CustomFullPath, "Zmodulowany_Amplituda.xlsx", modulatedSignal, carrierSignalData, signalData1, signalData2, additionalData, summedInformationSignal, carrierSignal);
            ExcelWriter.WriteSignalDataAndDFTResult(CustomFullPath, "Zmodulowany_DFT.xlsx", fourier_modulated, carrierSignalData);
        }
        public static void WriteSamples(string path, string excelFileName, List <Sample> samples,
                                        SignalData inputData1, SignalData inputData2 = null, SignalData inputData3 = null, AdditionalSignalData inputData4 = null,
                                        List <Sample> samples1 = null, List <Sample> samples2 = null)
        {
            Application app        = null;
            Workbooks   workBooks  = null;
            Workbook    workbook   = null;
            Sheets      worksheets = null;
            Worksheet   worksheet  = null;

            CreateExcelComponents(out app, out workBooks, out workbook, out worksheets, out worksheet);
            WriteSampleValuesToCells(samples, worksheet, FinalSampleValueColumnIndex, SampleDeltaTimeColumnIndex);
            WriteSignalDataToCells(inputData1, worksheet, Signal1ColumnDataIndex);
            WriteSignalDataToCells(inputData2, worksheet, Signal2ColumnDataIndex);
            WriteSignalDataToCells(inputData3, worksheet, Signal3ColumnDataIndex);
            WriteAdditionalDataToCells(inputData4, worksheet, AdditionalDataColumnIndex);
            WriteSampleValuesToCells(samples1, worksheet, Sample1ValueColumnIndex, 0);
            WriteSampleValuesToCells(samples2, worksheet, Sample2ValueColumnIndex, 0);

            SaveAndRelease(path, excelFileName, app, workBooks, workbook, worksheets, worksheet);
        }