2016-11-20 163 views
0

可以说我有以下载体定义在MATLAB符号函数中的for循环

a = [1 2 3 4 5 6]; 
b = [6 8 7 4 2 5]; 

现在我需要创建符号功能f(x) = b.*x +a的向量,其中每个ab分别来自载体ab

for c = 1:length(a) 
syms x 
f(x) = b(1,c).*x + a(1,c); 
fvector(1,c) = f; 
end 

然而,这是不行的,因为它没有看起来好像我能for循环中创建一个象征性的功能确实。

我需要创建一个符号函数,虽然在上面的例子中(不是完全相同的方程,但类似),并需要获得fvector向量的每个条目的反函数。

是否有另外一种方法可以解决这个问题?

回答

1

我不确定你的目标究竟是什么,但是如果你给了更多的上下文和一个你期望可以提供帮助的输入和输出的例子。

该代码定义了符号函数并以相当一般(低效率)的方式计算反函数。

a = [1 2 3 4 5 6]; 
b = [6 8 7 4 2 5]; 

syms x y 
for c = 1:length(a) 
    f = b(c).*x + a(c); 
    fvector(c) = f; 
    finv(1,c) = subs(solve(f==y, x),y,x); 
end 

输出

fvector = 

[ 6*x + 1, 8*x + 2, 7*x + 3, 4*x + 4, 2*x + 5, 5*x + 6] 


finv = 

[ x/6 - 1/6, x/8 - 1/4, x/7 - 3/7, x/4 - 1, x/2 - 5/2, x/5 - 6/5]