Unable to convert expression into double array

1 Ansicht (letzte 30 Tage)
Cameron Rampersadh
Cameron Rampersadh am 8 Apr. 2021
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

Antworten (1)

KSSV
KSSV am 8 Apr. 2021
This line:
subs(diff)
You have to substitute some value right? I guess you need to input value of t here......
  1 Kommentar
Cameron Rampersadh
Cameron Rampersadh am 8 Apr. 2021
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.

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by