Zawartość
- Kontynuuje konwolucję w Matlabie
- Matlab Code for Convolution
- Dyskretna konwolucja w Matlabie
- Kod Matlab dla dyskretnej konwolucji
- Circular Convolution w Matlabie
- Kod Matlab dla splotu kołowego
Zwoje dyskretne, ciągłe i okrężne mogą być wykonywane w Matlab® w ciągu kilku sekund, pod warunkiem posiadania odpowiedniego kodu i kilku innych podstawowych rzeczy.
Ten samouczek ma na celu:
- Zademonstruj w uproszczony sposób niezbędne komponenty kodu używanego do wykonywania konwolucji w Matlabie.
- Wizualizuj wyniki, wykreślając wykresy zawiłych funkcji.
Ten samouczek jest ułożony w następującej kolejności:
- Kontynuuje splot.
- Dyskretny splot.
- Okrągły splot.
Logika:
Prosta koncepcja Twojego kodowania powinna polegać na:
1. Zdefiniuj dwie funkcje dyskretne lub konturowe.
2. Przekształć je za pomocą funkcji Matlab „conv ()”
3.Wykreśl wyniki za pomocą funkcji „subplot ()”.
Kontynuuje konwolucję w Matlabie
Pokażemy to za pomocą dwóch funkcji kontynuacji:
- Przebieg impulsu. Oznaczone funkcją „square ()”. To jest wejście x (t) do systemu.
- Przejściowa odpowiedź kondensatora. Oznaczone równaniem postaci a * e1 / RC * t. Można to uznać za odpowiedź impulsową h (t) systemu.
Matlab Code for Convolution
odcień = 0; tfinal = 0,05; tstep = 0,0005; t = tint: tstep: tfinal; x = 4 * kwadrat (500 * t, 50); // Użyj tutaj wybranej funkcji. subplot (3, 1, 1); działka (t, x); h = 400 * exp ((-400 * t)); // Użyj wybranej funkcji. subplot (3, 1, 2); działka (t, h); t2 = 2 * tint: tstep: tfinal * 2; // Funkcja złożona wymaga pełnego wykreślenia szerszego zakresu. y = konw (x, h) * tstep; subplot (3, 1, 3); działka (t2, y);
Wiersz 1-5: Zdefiniuj zakres wartości na osi czasu.
Wiersz 7: Fala prostokątna jest inicjalizowana za pomocą funkcji Matlab 'kwadrat()'ma amplitudę 4, ω = 500 rad / s, a cykl pracy 50%.
Wiersz 9:Wątek poboczny() dzieli okno wyjściowe, aby pomieścić 3 wykresy na jednym ekranie, tj. tworzy tabelę z 3 wierszami i 1 kolumną (kolumnami), a następnie ostatni argument w wątek poboczny() wybiera 1 działkę do dalszej obróbki.
Wiersz 10: działki x (t).
Linia 12-15: Definiowana jest odpowiedź impulsowa układu h (t). Wątek poboczny() wybiera drugi wykres i wykreśla na nim h (t).
Wiersz 18: Dla wynikowej funkcji zawiłej zdefiniowano nowy zakres.
Wiersz 19-22: x (t) jest ostatecznie splecione z h (t), a następnie wykreślone w tym nowym zakresie. Dodano * tstep, aby odpowiednio dostosować oś x i y.
Dyskretna konwolucja w Matlabie
Wykonywanie dyskretnego splotu w programie Matlab jest bardzo proste i nieskomplikowane. Wystarczy zdefiniować dyskretne wartości każdej funkcji, a następnie zastosować funkcję ”konw. ()”na obu tych funkcjach.
Kod Matlab dla dyskretnej konwolucji
a = -1; // To jest początkowa wartość czasu dla x (t). b = 0; // Początkowa wartość czasu dla h (t). x = [2 -1 1]; h = [3 2 1]; subplot (3, 1, 1); t = a: a + długość (x) -1; // tstep nie jest tutaj wymagany. rdzeń (t, x); subplot (3, 1, 2); t = b: b + długość (h) -1; łodyga (t, h); y = konw (x, h); subplot (3, 1, 3); t = a + b: a + b + length (y) -1; łodyga (t, y);
Wiersz 4-5: Zdefiniuj dyskretne wartości dla x (t) i h (t).
Wiersz 8, 12 i 18: Zdefiniuj zakres dla osi czasu na wykresach, które mają być następnie wykreślane za pomocą trzon() funkcji (jeśli kreślenie nie jest wymagane, możesz pominąć te kroki).
Circular Convolution w Matlabie
Okrągły splot można wykonać w następujących krokach:
- Weź dyskretną transformatę Fouriera dwóch wektorów.
- Pomnóż dwie transformacje.
- Weź odwrotną dyskretną transformatę Fouriera iloczynu, a wynikiem jest splot kołowy dwóch wektorów.
Kod Matlab dla splotu kołowego
// Zdefiniuj dwa wektory dla splotu kołowego x = [2 5 4 1]; y = [1 4 3]; // Zeropad vectrs uptill 4 + 3-1 xpad = [x zeros (1, 6-length (x))]; ypad = [y zeros (1, 6-length (y))]; // Pomnóż ffts obu wektorów i weź idft produktu ccirc = ifft (fft (xpad). * Fft (ypad)); // Teraz wykres wynikowy (ccirc, 'fill') ylim ([0 35]) title ('Circular Convolution of xpad and ypad');