Trying to use Stem() - Error message

5 Ansichten (letzte 30 Tage)
Eric Cunningham
Eric Cunningham am 1 Dez. 2017
Beantwortet: Elizabeth Reese am 4 Dez. 2017
Hi, I'm trying to plot an output using Stem(). I solved for my transfer function symbolically, from my expected output in the time domain. I'm not sure how to go back to doing things numerically once I have all of my functions figured out.
I keep getting the errors:
Error using stem (line 40)
DOUBLE cannot convert the input expression into a double array.
Error in prog (line 30)
stem(t,y)
Ideally this should spit out a dirac comb with a period of omega. I'm still relatively new to Matlab, so any help would be appreciated! This is also a very rough version of the hopefully final code.
close all; clear all; clc;
syms t omega n A s lambda;
func = dirac(t - n*((2*pi)/omega));
y = symsum(func,n,0,10);
Y = laplace(y);
x = A*cos(omega*t)*exp(-lambda*t);
X = laplace(x);
H = piecewise(omega < 0, ((lambda + s)^2 + omega^2)/(A*(lambda + s)), 0 <= omega, (((lambda + s)^2 +...
omega^2)*(exp(-(2*pi*s)/omega) + exp(-(4*pi*s)/omega) + exp(-(6*pi*s)/omega) + exp(-(8*pi*s)/omega) +...
exp(-(10*pi*s)/omega) + exp(-(12*pi*s)/omega) + exp(-(14*pi*s)/omega) + exp(-(16*pi*s)/omega) +...
exp(-(18*pi*s)/omega) + exp(-(20*pi*s)/omega) + 1))/(A*(lambda + s)));
h = ilaplace(H);
y = ilaplace(X*H);
A = 5;
omega = 5;
lambda = 1;
t = linspace(0,20);
idx = y == Inf;
y(idx) = 1;
stem(t,y)
ylim([-.02 1.5])
xlabel('time')
ylabel

Antworten (1)

Elizabeth Reese
Elizabeth Reese am 4 Dez. 2017
You can use the subs function in the Symbolic Math Toolbox to get the numerical values of y and t. Here is the link to the documentation for that function.
For example, take the y from the following line:
y = ilaplace(X*H);
Then you can evaluate:
tEval = linspace(0,20);
yEval = subs(y,{A,omega,lambda,t},{5,5,1,tEval})
yEval(yEval == Inf) = 1
stem(tEval,yEval)
ylim([-.02 1.5])
xlabel('time')
ylabel('y')

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by