如何在 Matlab 的符号变量中使用变量?
例如,我有以下代码:
function f = constr_fourier(vec);
dim=prod(size(vec));
n=(dim-1)/2;
a=@(k) vec(k+1);
b=@(k) vec(n+k-1);
f = @(x) subs(a,{k,0})/2 + symsum(subs(a,{k,i})*cos(i*x) + ...
subs(b,{k,i})*sin(i*x),i,1,n);
在给定一个系数向量的情况下,我想在其中恢复傅里叶级数vec
。我想将 vec 中的实际值替换为函数的符号表达式。我试过了,subs
但它不起作用,或者我没有正确使用它。
这样做的正确方法是什么?
[编辑] 我试过
f = @(x) subs(a,k,0)/2 + symsum(subs(a,k,i)*cos(i*x) + ...
subs(b,{k,i})*sin(i*x),i,1,n);
但结果是有subs(...)
和没有的数值a(k)
。
我也尝试了一个不同的变体,它给出了一个结果,但是以错误的方式......
function f = constr_fourier(w);
syms x k n u c t vector;
evalin(symengine,'assume(k,Type::Integer)');
dim=prod(size(w));
m=(dim-1)/2;
a0=w(1);
a= w(2:m+1);
b= w(m+2:2*m+1);
u=@(k,vector) vector(k);
fs = @(x,n,c) c/2 + symsum(subs(u,{k,vector},{t,a})*cos(t*x) + subs(u,{k,vector}, {t,b})*sin(t*x),t,1,n);
f= fs(x,m,a0);
我尝试使用该功能u=@(k,vec) vec(k)
而不是最初的功能。当我subs(u,{k,vector},{t,a})
在终端中单独使用时,它可以正常工作,但在这里它不会......
我得到的结果是两个函数的向量而不是一个函数。