Autogenerating fuctions from syms-Expression

metty (view profile)

on 4 Jul 2019
Latest activity Commented on by metty

metty (view profile)

on 16 Jul 2019
Suppose I have a symbolic expression in Matlab that contains a vector, for example:
syms v1;
syms v2;
vector(1) = sin(v1)+cos(v2);
vector(2) = 1-sin(v1);
Is there a easy way to automatically make a function out of only the variable "vector" that looks something like this?
function vector = myFunction(v1,v2)
vector(1) = sin(v1)+cos(v2);
vector(2) = 1-sin(v1);
end
Of course, it's pointless in this example. I only have a relatively large matrix with long entries instead of the vector.
It would save me a lot of typing.

metty

metty (view profile)

on 5 Jul 2019
This solved it for me:
delete temp.txt
diary temp.txt
for i= 1:length(vector)
X = sprintf('vector(%d)=',i);
disp(X)
vector(i)
end
diary off
%%
find_and_replace('temp.txt', '\n \nans =\n \n', ' ');
find_and_replace('temp.txt', '\n \n', ';\n \n');
With the "find_and_replace" script from here.

Tags

Answer by Chidvi Modala

Chidvi Modala (view profile)

on 16 Jul 2019

I understood that you wanted to create a function which can automatically create equations and store them in a variable ‘vector’.
The below code will help you out
function vector=myFunc
vector{1}=@(v1,v2)(sin(v1)+cos(v2));
vector{2}=@(v1)(1-sin(v1));
end
Use fsolve to solve the above equations.

metty

metty (view profile)

on 16 Jul 2019
My initial situation was not the function, but the vector with syms entries. In my specific case, a matrix. The individual terms in the matrix are very large, and it would take me a day to type them out.