Plotting the derivative of an "switch-funktion"

1 Ansicht (letzte 30 Tage)
Jann B
Jann B am 6 Apr. 2020
Kommentiert: Jann B am 16 Apr. 2020
Hello,
we got some switch funktions which i plotted with the code shown below.
The only thing i need to fix, is the plot of the derivative of these funktion.
Where the dirac should be shown (just a peak), nothing appears.
Can someone give me a hint?
Thank you in advance.
%% ÜA Karlsruhe
% 2
% 2.1
clc, clear, clf
set(0,'DefaultFigureWindowStyle','docked')
% Signal A
figure('Name', 'RT_Karlsruhe 2.1', 'NumberTitle', 'off')
subplot(4, 1, 1)
hold on, grid on, axis equal
start = -2;
ende = 10;
t = linspace(start,ende,5000);
a = @(t) (t-2).*(heaviside(t-2) - heaviside(t-4)) + (t-6).*(heaviside(t-4) - heaviside(t-6));
A = a(t);
a_derivative = @(t) heaviside(t-2) - 4*dirac(t-4) - heaviside(t-6);
A_derivative = a_derivative(t);
syms x
diff_test = diff((x-2).*(heaviside(x-2) - heaviside(x-4)) + (x-6).*(heaviside(x-4) - heaviside(x-6)));
% x = t;
%
% Diff_test = diff_test(x);
plot(t,A, 'g', 'LineWidth', 2)
plot(t,A_derivative, 'r--', 'LineWidth', 2)
fplot(diff_test, [-2 10], 'bo', 'LineWidth', 2)
title('Signal A')
xlabel('Zeit "t"')
ylabel('a(t) und a_derivative(t)')
%% Signal B
subplot(4,1,2)
hold on, grid on, axis equal
% Beide Funktionen für Signal B funktionieren
b = @(t) heaviside(t-2) - heaviside(t-8) + heaviside(t-4) - heaviside(t-6);
% b = @(t) heaviside(t-2) - heaviside(t-4) + 2*(heaviside(t-4) - heaviside(t-6)) ...
% + heaviside(t-6) - heaviside(t-8);
B = b(t);
b_derivative = @(t) dirac(t-2) - dirac(t-8) + dirac(t-4) - dirac(t-6);
B_derivative = b_derivative(t);
plot(t,B, 'g', 'LineWidth', 2)
plot(t,B_derivative, 'r--', 'LineWidth', 2)
title('Signal B')
xlabel('Zeit "t"')
ylabel('b(t) und b_derivative(t)')
%% Signal C
subplot(4,1,3)
hold on, grid on, axis equal
c = @(t) -2*heaviside(t-1) + 2*heaviside(t-3) + (t-4).*heaviside(t-4) - (t-4).*heaviside(t-6);
C = c(t);
c_derivative = @(t) -2*dirac(t-1) + 2*dirac(t-3) + heaviside(t-4) - heaviside(t-6);
C_derivative = c_derivative(t);
plot(t,C, 'g', 'LineWidth', 2)
plot(t,C_derivative, 'r--', 'LineWidth', 2)
title('Signal C')
xlabel('Zeit "t"')
ylabel('b(t) und c_derivative(t)')
%% Signal D
subplot(4,1,4)
hold on, grid on, axis equal
% d = @(t) 2*t.*(heaviside(t+1) - heaviside(t-1)) + (3-t).*(heaviside(t-1) - heaviside(t-3));
d = @(t) (2*t).*heaviside(t+1) - (3*t-3).*heaviside(t-1) - (3-t).*heaviside(t-3);
D = d(t);
d_derivative = @(t) 2*heaviside(t+1) + (2*t).*dirac(t+1) - 3*heaviside(t-1) ...
+ heaviside(t-3);
D_derivative = d_derivative(t);
plot(t,D, 'g', 'LineWidth', 2)
plot(t, D_derivative, 'r--', 'LineWidth', 2)
xticks(start:1:ende)
title('Signal D')
xlabel('Zeit "t"')
ylabel('d(t) und d_derivative(t)')%% ÜA Karlsruhe
% 2
% 2.1
clc, clear, clf
set(0,'DefaultFigureWindowStyle','docked')
% Signal A
figure('Name', 'RT_Karlsruhe 2.1', 'NumberTitle', 'off')
subplot(4, 1, 1)
hold on, grid on, axis equal
start = -2;
ende = 10;
t = linspace(start,ende,5000);
a = @(t) (t-2).*(heaviside(t-2) - heaviside(t-4)) + (t-6).*(heaviside(t-4) - heaviside(t-6));
A = a(t);
a_derivative = @(t) heaviside(t-2) - 4*dirac(t-4) - heaviside(t-6);
A_derivative = a_derivative(t);
syms x
diff_test = diff((x-2).*(heaviside(x-2) - heaviside(x-4)) + (x-6).*(heaviside(x-4) - heaviside(x-6)));
% x = t;
%
% Diff_test = diff_test(x);
plot(t,A, 'g', 'LineWidth', 2)
plot(t,A_derivative, 'r--', 'LineWidth', 2)
fplot(diff_test, [-2 10], 'bo', 'LineWidth', 2)
title('Signal A')
xlabel('Zeit "t"')
ylabel('a(t) und a_derivative(t)')
%% Signal B
subplot(4,1,2)
hold on, grid on, axis equal
% Beide Funktionen für Signal B funktionieren
b = @(t) heaviside(t-2) - heaviside(t-8) + heaviside(t-4) - heaviside(t-6);
% b = @(t) heaviside(t-2) - heaviside(t-4) + 2*(heaviside(t-4) - heaviside(t-6)) ...
% + heaviside(t-6) - heaviside(t-8);
B = b(t);
b_derivative = @(t) dirac(t-2) - dirac(t-8) + dirac(t-4) - dirac(t-6);
B_derivative = b_derivative(t);
plot(t,B, 'g', 'LineWidth', 2)
plot(t,B_derivative, 'r--', 'LineWidth', 2)
title('Signal B')
xlabel('Zeit "t"')
ylabel('b(t) und b_derivative(t)')
%% Signal C
subplot(4,1,3)
hold on, grid on, axis equal
c = @(t) -2*heaviside(t-1) + 2*heaviside(t-3) + (t-4).*heaviside(t-4) - (t-4).*heaviside(t-6);
C = c(t);
c_derivative = @(t) -2*dirac(t-1) + 2*dirac(t-3) + heaviside(t-4) - heaviside(t-6);
C_derivative = c_derivative(t);
plot(t,C, 'g', 'LineWidth', 2)
plot(t,C_derivative, 'r--', 'LineWidth', 2)
title('Signal C')
xlabel('Zeit "t"')
ylabel('b(t) und c_derivative(t)')
%% Signal D
subplot(4,1,4)
hold on, grid on, axis equal
% d = @(t) 2*t.*(heaviside(t+1) - heaviside(t-1)) + (3-t).*(heaviside(t-1) - heaviside(t-3));
d = @(t) (2*t).*heaviside(t+1) - (3*t-3).*heaviside(t-1) - (3-t).*heaviside(t-3);
D = d(t);
d_derivative = @(t) 2*heaviside(t+1) + (2*t).*dirac(t+1) - 3*heaviside(t-1) ...
+ heaviside(t-3);
D_derivative = d_derivative(t);
plot(t,D, 'g', 'LineWidth', 2)
plot(t, D_derivative, 'r--', 'LineWidth', 2)
xticks(start:1:ende)
title('Signal D')
xlabel('Zeit "t"')
ylabel('d(t) und d_derivative(t)')

Akzeptierte Antwort

Birdman
Birdman am 6 Apr. 2020
You may use Symbolic Toolbox and its beauties for this case :) Here is the code:
syms y1(t) y2(t) y3(t) y4(t)
y1(t)=piecewise(2<=t<=4,t-2,4<t<6,t-6,0);
Dy1(t)=diff(y1);
y2(t)=piecewise(2<=t<=4,2,4<t<6,3,6<=t<=8,1,0);
Dy2(t)=diff(y2);
y3(t)=piecewise(1<=t<=3,-2,4<=t<=6,t-4,0);
Dy3(t)=diff(y3);
y4(t)=piecewise(-1<=t<=1,2*t,1<=t<=3,-t+3,0);
Dy4(t)=diff(y4);
t=-2:0.001:9;
subplot(4,1,1);plot(t,y1(t),t,Dy1(t));
subplot(4,1,2);plot(t,y2(t),t,Dy2(t));
subplot(4,1,3);plot(t,y3(t),t,Dy3(t));
subplot(4,1,4);plot(t,y4(t),t,Dy4(t));
Observe the results and let me know if it works.
  1 Kommentar
Jann B
Jann B am 16 Apr. 2020
Thank you for the quick response.
It's not quite perfect yet.
I think i need to figure out how to set the impulse of the dirac-funktion to 1 before plotting it.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by