3 views (last 30 days)

Show older comments

I just am unsure of the correct syntax for plotting a signal with unit step. This is what I have so far. It gives me an error saying incorrect dimensions but I don't know where to put . for multiplying.

clear all; close all; clc;

syms t t0

u(t) = piecewise(t<t0, 0, t>=t0, 1);

t = -10:1:10;

xt = (t+2)*u(t+2)-(2*t*u(t))+((2*(t-4)+2)*u(t-4));

plot(t,xt);

axis([0,40,-2,2])

title('x(t) = (t+2)*u(t+2)-(2*t*u(t))+((2*(t-4)+2)*u(t-4))')

xlabel('t')

ylabel('x(t)')

grid;

Clayton Gotberg
on 26 Apr 2021

Edited: Clayton Gotberg
on 26 Apr 2021

One error is in the line

xt = (t+2)*u(t+2)-(2*t*u(t))+((2*(t-4)+2)*u(t-4));

and it is happening because of problems with the size of arrays you're calling. For example, in the first part:

(t+2)*u(t+2)

(t+2) % Adds 2 to each element in t, a 1x21 double

u(t+2) % output of u function on t+2, a 1x21 double

A*B % matrix multiplication - the number of columns in A must equal

% the number of rows in B

When you use *, MATLAB assumes you want matrix multiplication. If you want elements in A to be multiplied by elements in the same place in B, use element-wise multiplication (.*) instead.

To answer your question, anywhere that you want to use element-wise multiplication needs a .* instead of a *

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

Start Hunting!