f=@(x) function handle with range + conv
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Aqeel Mohamed
am 2 Mai 2020
Bearbeitet: Aqeel Mohamed
am 2 Mai 2020
Dear all,
I have these functions with the code that aims to plot the two signals - x(t) and h(t) - alongside their time range then find the convolution of the two signals.
x=@(t) 2.*((-2<=t&&t<=1)+2).^2.*18.*(2<=t&&t<=3).*-9.*((4<=t&&t<=5)-5);
tx=-2:0.01:5;
h=@(t) 3*(0<=t&&t<=2) -6*((4<=t&&t<=4)-3);
th=0:0.01:4;
c=conv(x(tx),h(th));
tc=(tx(1)+th(1)):0.01:(tx(end)+th(end));
figure(1)
subplot(3,1,1); plot(tx,x(tx));
subplot(3,1,2); plot(th,h(th));
subplot(3,1,3); plot(tc,c);
However, I got this error.
Operands to the || and && operators must be convertible to logical scalar values.
Error in @(t)2.*((-2<=t&&t<=1)+2).^2.*18.*(2<=t&&t<=3).*-9.*((4<=t&&t<=5)-5)
I want to use function handle to plot them.
Is there a way to fix this problem?
Thanks in advance for your answers.
0 Kommentare
Akzeptierte Antwort
Deepak Gupta
am 2 Mai 2020
Hi Aqeel,
Piecewise function is very helpful in writing conditional functions. Check it out:
As i see multiple errors in your code so providing a piece of code for your reference to solve this problem.
x = @(t) piecewise(t<-2, 0, -2<=t<1, 2*(t+2)^2, 1<=t<3, 18, 3<=t<5, -9*(t-5), t>5, 0);
h = @(t) piecewise(t<0, 0, 0<=t<2, 3*(t+2), 2<=t<4, -6*(t-3), t>4, 0);
tx=-2:0.01:5;
th=0:0.01:4;
xVec = double(subs(x, tx));
hVec = double(subs(h, th));
c = conv(xVec, hVec);
tc = (tx(1)+th(1)):0.01:(tx(end)+th(end));
figure(1)
subplot(3,1,1); plot(tx,xVec);
subplot(3,1,2); plot(th,hVec);
subplot(3,1,3); plot(tc,c);
Cheers.
2 Kommentare
Deepak Gupta
am 2 Mai 2020
Bearbeitet: Deepak Gupta
am 2 Mai 2020
Extra Note: As your function x is not defined at tx = 5 and h at th = 4, hence matlab returns function values NaN at these time instants. To me it seems like a problem with the question. Because of this you don't see convolution plot from -2 to 9 as expected.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Subplots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!