Unable to convert expression into double array

1 回表示 (過去 30 日間)
Cameron Rampersadh
Cameron Rampersadh 2021 年 4 月 8 日
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 件のコメント
Cameron Rampersadh
Cameron Rampersadh 2021 年 4 月 8 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeNumber Theory についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by