Matlab Rechteckfunktion schreiben um sie zu mit einem impulsantwort zu falten?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Prinzipiell sieht die erste Teilaufgabe a) soweit Ok aus. Hier evtl. noch eine alternative Version, welche ohne eine zweite for-Schleife auskommt. (Die schnellste und eleganteste Variante würde natürlich über die FFT laufen ... .)

function y = myConv(x,h)
%Signallängen
Nx = length(x);
Nh = length(h);

%Initialisieren des Ausgangssignals
y = zeros(1, Nx + Ny - 1);

%Berechnen der Koeffizienten des Ausgangssignals
for(ii = 1:Nx)
   y(ii:(ii + Nh - 1)) = x(ii) * h;
end
end

Für die Teilaufgabe b):

Mit Koeffizienten sind die einzelnen Werte der diskreten Signale gemeint. Für einen Lösungsvorschlag siehe unten. Die benötigten Signale werden schlichtweg wie in der Aufgabe gefordert innerhalb der Funktion MyTask2 definiert.

%Funktion für Teilaufgabe b)
function [] = MyTask2()
%Definieren des Rechtecksignals
x_rect = zeros(1,10);
x_rect(2:5) = 1;

%Definieren des Impulssignals
h_impuls = zeros(1,10);
h_impuls(1) = 1;

%Diskrete Faltung
y = myConv(x_rect, h_impuls);

%Plotten der beiden Signale
figure(1);
subplot(2,1,1);
stem(0:(length(y) - 1), [x_rect, zeros(1, length(y) - length(x_rect))]);
grid on;
legend('Eingangssignal');

subplot(2,1,2);
stem(0:(length(y) - 1), y, 'r');
grid on;
legend('Ausgangssignal');

end
OSaft111 
Fragesteller
 14.01.2021, 19:48

Vielen Dank !

0