/// <summary> /// Filtracja sygnału delta /// </summary> private void initialize_Sinc() { signal1 = new AnalogSignal(1, 100, 1000, 0.5).GenerateSincSignal(5); courseGraph1 = new CourseGraph(10, 24, 220, 500, "Sygnał Sinc"); courseGraph1.Signal = signal1; courseGraph1.Autoscale(); courseGraph1.DrawGraph(); spectrumGraph1 = new SpectrumGraph(520, 24, 220, 500, "Widmo Sinc"); spectrumGraph1.Signal = signal1; spectrumGraph1.DFT(); spectrumGraph1.Autoscale(); spectrumGraph1.DrawGraph(); signal2 = new AnalogSignal(1, 100, 1000, 0.5).GenerateDelta(); courseGraph2 = new CourseGraph(10, 254, 220, 500, "Sygnał Delta"); courseGraph2.Signal = signal2; courseGraph2.Autoscale(); courseGraph2.DrawGraph(); spectrumGraph2 = new SpectrumGraph(520, 254, 220, 500, "Widmo delta"); spectrumGraph2.Signal = signal2; spectrumGraph2.DFT(); spectrumGraph2.Autoscale(); spectrumGraph2.DrawGraph(); signal3 = new AnalogSignal(1, 100, 1000, 0.5).Weave(signal2, signal1); courseGraph3 = new CourseGraph(10, 484, 220, 500, "Przebieg odpowiedzi impulsowej"); courseGraph3.Signal = signal3; courseGraph3.Autoscale(); courseGraph3.DrawGraph(); spectrumGraph3 = new SpectrumGraph(520, 484, 220, 500, "Widmo odpowiedzi impulsowej"); spectrumGraph3.Signal = signal3; spectrumGraph3.DFT(); spectrumGraph3.Autoscale(); spectrumGraph3.DrawGraph(); }
/// <summary> /// Filtracja szumu /// </summary> private void initialize_FilteringOfNoise() { signal1 = new AnalogSignal(1, 300, 1000, 0.5).GenerateSincSignal(19); courseGraph1 = new CourseGraph(10, 24, 220, 500, "Sygnał Sinc"); courseGraph1.Signal = signal1; courseGraph1.Autoscale(); courseGraph1.DrawGraph(); spectrumGraph1 = new SpectrumGraph(520, 24, 220, 500, "Widmo Sinc"); spectrumGraph1.Signal = signal1; spectrumGraph1.DFT(); spectrumGraph1.Autoscale(); spectrumGraph1.DrawGraph(); signal2 = new AnalogSignal(1, 100, 1000, 0.5).GenerateNoise(0.5); courseGraph2 = new CourseGraph(10, 254, 220, 500, "Sygnał Delta"); courseGraph2.Signal = signal2; courseGraph2.Autoscale(); courseGraph2.DrawGraph(); spectrumGraph2 = new SpectrumGraph(520, 254, 220, 500, "Widmo delta"); spectrumGraph2.Signal = signal2; spectrumGraph2.DFT(); spectrumGraph2.Autoscale(); spectrumGraph2.DrawGraph(); signal3 = new AnalogSignal(1, 100, 1000, 0.5).Weave(signal1, signal2); courseGraph3 = new CourseGraph(10, 484, 220, 500, "Przebieg po filtracji"); courseGraph3.Signal = signal3; courseGraph3.Autoscale(); courseGraph3.DrawGraph(); spectrumGraph3 = new SpectrumGraph(520, 484, 220, 500, "Widmo po filtracji"); spectrumGraph3.Signal = signal3; spectrumGraph3.DFT(); spectrumGraph3.Autoscale(); spectrumGraph3.DrawGraph(); }
private void initialize_generateFilter_1() { signal1 = new AnalogSignal(1, 300, 1000, 0.5).GenerateFilter1(); courseGraph1 = new CourseGraph(10, 24, 220, 500, "Przebieg charakterystyki"); courseGraph1.Signal = signal1; courseGraph1.Autoscale(); courseGraph1.DrawGraph(); spectrumGraph1 = new SpectrumGraph(520, 24, 220, 700, "Odpowiedź filtru"); spectrumGraph1.Signal = signal1; spectrumGraph1.DFT(); spectrumGraph1.Autoscale(); spectrumGraph1.DrawGraph(); signal2 = new AnalogSignal(1, 100, 1000, 0.5).GenerateNoise(0.5); courseGraph2 = new CourseGraph(10, 254, 220, 500, "Szum"); courseGraph2.Signal = signal2; courseGraph2.Autoscale(); courseGraph2.DrawGraph(); spectrumGraph2 = new SpectrumGraph(520, 254, 220, 500, "Widmo szumu"); spectrumGraph2.Signal = signal2; spectrumGraph2.DFT(); spectrumGraph2.Autoscale(); spectrumGraph2.DrawGraph(); signal3 = new AnalogSignal(1, 100, 1000, 0.5).Weave(signal1, signal2); courseGraph3 = new CourseGraph(10, 484, 220, 500, "Przebieg po filtracji"); courseGraph3.Signal = signal3; courseGraph3.Autoscale(); courseGraph3.DrawGraph(); spectrumGraph3 = new SpectrumGraph(520, 484, 220, 500, "Widmo po filtracji"); spectrumGraph3.Signal = signal3; spectrumGraph3.DFT(); spectrumGraph3.Autoscale(); spectrumGraph3.DrawGraph(); }
private void editSignal(int item, double amplitude, double frequency, double samplingFrequency, double length, int accuracyOfApproximation) { graphPanel.Controls.Remove(signalGraph); String label = ""; signal = new AnalogSignal(amplitude, frequency, samplingFrequency, length); switch (item) { case 0: label = "Sinusoida"; signal.GenerateSinusSignal(); break; case 1: label = "Piłokształtny"; signal.GenerateSawSignal(accuracyOfApproximation); break; case 2: label = "Trójkątny"; signal.GenerateTriangleSignal(accuracyOfApproximation); break; case 3: label = "Prostokątny"; signal.GenerateSquareSignal(accuracyOfApproximation); break; case 4: label = "Szum"; signal.GenerateNoise(accuracyOfApproximation); break; } signalGraph = new CourseGraph(3, 3, 150, 500, label); signalGraph.Signal = signal; signalGraph.Autoscale(); signalGraph.DrawGraph(); graphPanel.Controls.Add(signalGraph); }
/// <summary> /// Funkcja realuzująca demodulację sygnałów zmodulowanych amplitudowo i fazowo /// </summary> /// <param name="carrier">Sygnał nośny - kod</param> /// <param name="timeOfBit">Czas trwania jednego bitu</param> /// <param name="limit">Granica komparatora</param> /// <param name="unipolar">Określa, czy iloczyn sygnałów jest jednobiegunowy</param> /// <returns>Zwraca ciąg bitów zawartych w sygnale nośnym</returns> public DigitalSignal demodulationASKandPSK(AnalogSignal carrier, double timeOfBit, long limit, bool unipolar) { int numberOfBit; int lengthOfWord = 8; long [] heuristic = new long[lengthOfWord]; analogSignal = new AnalogSignal(carrier.Amplitude, carrier.Frequency, carrier.SamplingFrequency, carrier.Length); //Generowanie sygnału analogSignal.GenerateSinusSignal(); //Pomnożenie sygnału nośnego przez informację AnalogSignal multi = analogSignal * carrier; string word = ""; for (int i = 0; i < carrier.LengthOfBuffer; i++) { numberOfBit = (int)(i / carrier.SamplingFrequency / timeOfBit); heuristic[numberOfBit] += (long)multi.Course[i]; } for (int i = 0; i < lengthOfWord; i++) { if (heuristic[i] > limit && unipolar) //jeżeli sygnał jest jednobiegunowy { word += "1"; } else if (heuristic[i] < limit && !unipolar) // jeżeli sygnał jest dwubiegunowy { word += "1"; } else { word += "0"; } } return(new DigitalSignal(word, carrier.SamplingFrequency, timeOfBit)); }
/// <summary> /// Funkcja inicjalizujaca sygnaly i ich wykresy dla lab5 dla demodulacji ASK /// </summary> private void initialize_Lab5_ASK() { Demodulation demodul = new Demodulation(); string word = "10101011"; courseGraph1 = new CourseGraph(10, 24, 150, 500, "Nośna"); courseGraph2 = new CourseGraph(10, 184, 150, 500, word); courseGraph3 = new CourseGraph(10, 344, 150, 500, "Kod ASK"); signal1 = new AnalogSignal(7, 32.5, 1000, 0.5); // nośna digital = new DigitalSignal(word, 1000, 0.0625); //informacja // s. nośny signal1.GenerateSinusSignal(); // s. zmodulowany AnalogSignal ASK = new AnalogSignal(signal1); ASK.ASK(signal1, digital); // Rysowanie przebiegów: // Sygnał nośny courseGraph1.Signal = signal1; courseGraph1.Autoscale(); courseGraph1.DrawGraph(); //sygnal zmodulowany ASK courseGraph2.Signal = ASK; courseGraph2.Autoscale(); courseGraph2.DrawGraph(); //Kod cyfrowy courseGraph3.Signal = demodul.demodulationASKandPSK(ASK, 0.0625, 200, true); // demodulacja courseGraph3.Autoscale(); courseGraph3.DrawGraph(); }
/// <summary> /// Funkcja inicjalizujaca sygnaly i ich wykresy dla lab5 dla demodulacji PSK /// </summary> private void initialize_Lab5_PSK() { Demodulation demodul = new Demodulation(); string word = "10101011"; courseGraph1 = new CourseGraph(10, 24, 150, 500, word); courseGraph2 = new CourseGraph(10, 184, 150, 500, "Kod PSK"); courseGraph3 = new CourseGraph(10, 344, 150, 500, "Kod cyfrowy"); digital = new DigitalSignal(word, 1000, 0.0625); //informacja // s. zmodulowany AnalogSignal PSK = new AnalogSignal(10, 20, 1000, 0.5).GenerateSinusSignal(); PSK.PSK(digital); // Rysowanie przebiegów: // Sygnał nośny courseGraph1.Signal = digital; courseGraph1.Limit(5000); courseGraph1.DrawGraph(); //sygnal zmodulowany ASK courseGraph2.Signal = PSK; courseGraph2.Limit(5000); courseGraph2.DrawGraph(); //Kod cyfrowy courseGraph3.Signal = demodul.demodulationASKandPSK(PSK, 0.0625, 200, false); //demodualcja courseGraph3.Limit(5000); courseGraph3.DrawGraph(); }
/// <summary> /// Funkcja inicjalizujaca sygnaly i ich wykresy dla lab1 i lab2 /// </summary> private void initialize_Lab1_Lab2() { // inicjalizacja obiektow klasy wykresow przebiegu sygnalu courseGraph1 = new CourseGraph(10, 24, 150, 500, "Sygnał 1."); courseGraph2 = new CourseGraph(10, 184, 150, 500, "Sygnał 2."); courseGraph3 = new CourseGraph(10, 344, 150, 500, "Suma"); courseGraph4 = new CourseGraph(10, 504, 150, 500, "Iloczyn"); // inicjalizacja obiektow klasy wykresow widma spectrumGraph1 = new SpectrumGraph(520, 24, 150, 500, "Sygnał 1."); spectrumGraph2 = new SpectrumGraph(520, 184, 150, 500, "Sygnał 2."); spectrumGraph3 = new SpectrumGraph(520, 344, 150, 500, "Suma"); spectrumGraph4 = new SpectrumGraph(520, 504, 150, 500, "Iloczyn"); // inicjalizacja obiektow klasy sygnalow signal1 = new AnalogSignal(20, 100, 1000, 0.5); signal2 = new AnalogSignal(50, 10, 1000, 0.5); // Generowanie sygnalow na podstawie // podanych w konstruktorze parametrow signal1.GenerateSinusSignal(); signal2.GenerateSinusSignal(); // rysowanie wykresow sygnalu 1. courseGraph1.Signal = signal1; courseGraph1.Autoscale(); courseGraph1.DrawGraph(); spectrumGraph1.Signal = signal1; spectrumGraph1.Autoscale(); spectrumGraph1.DFT(); spectrumGraph1.DrawGraph(); // rysowanie wykresow sygnalu 2. courseGraph2.Signal = signal2; courseGraph2.Autoscale(); courseGraph2.DrawGraph(); spectrumGraph2.Signal = signal2; spectrumGraph2.Autoscale(); spectrumGraph2.DFT(); spectrumGraph2.DrawGraph(); // rysowanie wykresow sumy sygnalow Signal sumOfSignals = signal1 + signal2; courseGraph3.Signal = sumOfSignals; courseGraph3.Autoscale(); courseGraph3.DrawGraph(); spectrumGraph3.Signal = sumOfSignals; spectrumGraph3.Autoscale(); spectrumGraph3.DFT(); spectrumGraph3.DrawGraph(); // rysowanie wykresow iloczynu sygnalow Signal productOfSignals = signal1 * signal2; courseGraph4.Signal = productOfSignals; courseGraph4.Autoscale(); courseGraph4.DrawGraph(); spectrumGraph4.Signal = productOfSignals; spectrumGraph4.Autoscale(); spectrumGraph4.DFT(); spectrumGraph4.DrawGraph(); }
/// <summary> /// Funkcja inicjalizujaca sygnaly i ich wykresy dla lab3 /// </summary> private void initialize_Lab3() { // inicjalizacja obiektow klasy wykresow przebiegu sygnalu courseGraph1 = new CourseGraph(10, 24, 150, 500, "Nośna"); courseGraph2 = new CourseGraph(10, 184, 150, 500, "Sygnał informacyjny"); courseGraph3 = new CourseGraph(10, 344, 150, 500, "AM"); courseGraph4 = new CourseGraph(10, 504, 150, 500, "PM"); // inicjalizacja obiektow klasy wykresow widma spectrumGraph1 = new SpectrumGraph(520, 24, 150, 500, "Nośna"); spectrumGraph2 = new SpectrumGraph(520, 184, 150, 500, "Sygnał informacyjny"); spectrumGraph3 = new SpectrumGraph(520, 344, 150, 500, "AM"); spectrumGraph4 = new SpectrumGraph(520, 504, 150, 500, "PM"); // inicjalizacja obiektow klasy sygnalow signal1 = new AnalogSignal(50, 100, 1000, 0.5); // nośna signal2 = new AnalogSignal(50, 10, 1000, 0.5); // sygnał informacyjny // Generowanie sygnalow na podstawie // podanych w konstruktorze parametrow signal1.GenerateSinusSignal(); signal2.GenerateSinusSignal(); // rysowanie wykresow sygnalu 1. courseGraph1.Signal = signal1; courseGraph1.DrawGraph(); spectrumGraph1.Signal = signal1; spectrumGraph1.Limit(2); spectrumGraph1.DrawGraph(); // rysowanie wykresow sygnalu 2. courseGraph2.Signal = signal2; courseGraph2.DrawGraph(); spectrumGraph2.Signal = signal2; spectrumGraph2.Limit(2); spectrumGraph2.DrawGraph(); // rysowanie wykresow AM AnalogSignal AM = new AnalogSignal(); AM.AmplitudeModulation(signal1, signal2, 0.01); courseGraph3.Signal = AM; courseGraph3.Limit(1500); courseGraph3.DrawGraph(); spectrumGraph3.Signal = AM; spectrumGraph3.Limit(15); spectrumGraph3.DrawGraph(); //rysowanie wykresow PW AnalogSignal PM = new AnalogSignal(); PM.PhaseModulation(signal1, signal2, 0.5); courseGraph4.Signal = PM; courseGraph4.DrawGraph(); spectrumGraph4.Signal = PM; spectrumGraph4.Limit(2); spectrumGraph4.DrawGraph(); }
/// <summary> /// Funkcja inicjalizująca obiekty sygnałów do wybranego labolatorium /// </summary> private void initialize(int lab) { Controls.Remove(courseGraph1); Controls.Remove(courseGraph2); Controls.Remove(courseGraph3); Controls.Remove(courseGraph4); Controls.Remove(spectrumGraph1); Controls.Remove(spectrumGraph2); Controls.Remove(spectrumGraph3); Controls.Remove(spectrumGraph4); courseGraph1 = null; courseGraph2 = null; courseGraph3 = null; courseGraph4 = null; spectrumGraph1 = null; spectrumGraph2 = null; spectrumGraph3 = null; spectrumGraph4 = null; signal1 = null; signal2 = null; signal3 = null; digital = null; ft = new FourierTransform(); this.Controls.Clear(); switch (lab) { case 1: initialize_Lab1_Lab2(); break; case 2: initialize_Lab3(); break; case 3: initialize_Lab4_ASK(); break; case 4: initialize_Lab4_FSK_PSK(); break; case 5: initialize_Lab5_ASK(); break; case 6: initialize_Lab5_PSK(); break; case 7: initialize_Lab5_FSK(); break; case 8: initialize_SquareTriangleSaw(); break; case 9: initialize_MSE(); break; case 10: initialize_MSEPlot(); break; case 11: initialize_Correlation_1(); break; case 12: initialize_Correlation_2(); break; case 13: initialize_IDFT(); break; case 14: initialize_Sinc(); break; case 15: initialize_FilteringOfNoise(); break; case 16: initialize_generateFilter_1(); break; case 17: initialize_generateFilter_2(); break; case 18: initialize_generateFilter_3(); break; case 19: initialize_CDMA(); break; default: initialize_Lab1_Lab2(); break; } Controls.Add(courseGraph1); Controls.Add(courseGraph2); Controls.Add(courseGraph3); Controls.Add(courseGraph4); Controls.Add(spectrumGraph1); Controls.Add(spectrumGraph2); Controls.Add(spectrumGraph3); Controls.Add(spectrumGraph4); InitializeComponent(); }