How can I modify the following MATLAB code to solve the problem on the picture?
ID: 2317158 • Letter: H
Question
How can I modify the following MATLAB code to solve the problem on the picture?
clc; clear; close all;
%Definitions:
tmin=0;
tmax=8;
stepSize=1e-3;
%Create time vector:
t=tmin:stepSize:tmax;
%Preallocate Array:
x=zeros(1,length(t));
h=zeros(1,length(t));
%Create x(t):
for i=1:length(t)
if t(i) < 1
x(i)=1;
else
x(i)=0;
end
end
%Create h(t):
for i=1:length(t)
if t(i) < 1
h(i)=t(i);
else
h(i)=1;
end
end
%Convolution: y(t) = x(t)*h(t)
yfull=conv(x,h,'full')*stepSize;
y=yfull(1:length(t)); %Take only half the samples
%Plot results:
subplot(3,1,1); plot(t,x); %x(t)
xlabel('t'); ylabel('x(t)'); grid on;
subplot(3,1,2); plot(t,h); %h(t)
xlabel('t'); ylabel('h(t)'); grid on;
subplot(3,1,3); plot(t,y); %y(t)
xlabel('t'); ylabel('y(t)'); title('y(t) = x(t)*h(t)'); grid on;
Explanation / Answer
MODIFICATION IN MATLAB (NEW CODE):
clc; clear; close all;
%Definitions:
tmin=0;
tmax=8;
stepSize=1e-3;
for k=1:20
t(k) = k/20;
i(k) = 0.4*(1-exp(-t(k)/tau1));
end
imax = i(20);
tau2 = 200/200;
for k = 21:120
t(k) = k/20;
i(k) = imax*exp(-t(k-20)/tau2);
end
%Create time vector:
t=tmin:stepSize:tmax;
%Preallocate Array:
x=zeros(1,length(t));
h=zeros(1,length(t));
%Create x(t):
for i=1:length(t)
if t(i) < 1
x(i)=1;
else
x(i)=0;
end
end
%Create h(t):
for i=1:length(t)
if t(i) < 1
h(i)=t(i);
else
h(i)=1;
end
end
%Convolution: y(t) = x(t)*h(t)
yfull=conv(x,h,'full')*stepSize;
y=yfull(1:length(t)); %Take only half the samples
% plot the current
plot(t,i,'o')
axis([0 6 0 0.18])
title('Current of an RL circuit')
xlabel('Time, s')
ylabel('Current, A')
%Plot results:
subplot(3,1,1); plot(t,x); %x(t)
xlabel('t'); ylabel('x(t)'); grid on;
subplot(3,1,2); plot(t,h); %h(t)
xlabel('t'); ylabel('h(t)'); grid on;
subplot(3,1,3); plot(t,y); %y(t)
xlabel('t'); ylabel('y(t)'); title('y(t) = x(t)*h(t)'); grid on;
(a) : h(t) = u(t-1) u(t-3)
(b): function dcrl = inductansoff(t,i)
% function for RL circuit calculations
Vs=50;
i0=0;
L=9;
R=1;
X = Vs/L;
Y = i*R/L;
if t<30
dcrl = X - Y;
else
dcrl = -Y; %switched 0ff Vs=0
if t>50
dcrl = X - Y;
else
dcrl = -Y; %switched 0ff Vs=0
end
end
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.