Unable to convert expression into double array

Following code produces the error for 'while abs(double(subs(diff))) < 1/10'
syms f(t)
syms t
syms n
T = 2*pi;
w1 = 1;
t2 = linspace(-1, 1, 10);
f(t) = piecewise(-pi<t<0, (4+t)/2, 0<=t<pi, (2-t).*cos(2*t));
Cn = (int(f(t) * exp(-1j * n * w1 * t), -T/2, T/2))/T;
n = 1;
f(t2);
diff = 0;
while abs(double(subs(diff))) < 1/10
Cn = (int(f(t) * exp(-1j * n * w1 * t2), -T/2, T/2))/T
Sn = Cn.*exp(1j * n * w1 * t);
diff = abs(f(t2)-Sn)
diff = simplify(diff)
diff = vpa(diff)
n = n + 1;
end
n
Anyone know what i can do? Cheers

답변 (1개)

KSSV
KSSV 2021년 4월 8일
This line:
subs(diff)
You have to substitute some value right? I guess you need to input value of t here......

댓글 수: 1

I need to calculate the difference between f(t2) and Sn, and if their difference is greater than 1/10, the while loop needs to be exited and displays what value of n the while loop got up to. Hence, putting diff in the while loop. I have changed diff to another variable name as ive just learnt that it is a standard matlab function.

댓글을 달려면 로그인하십시오.

카테고리

태그

질문:

2021년 4월 8일

댓글:

2021년 4월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by