Autogenerating fuctions from syms-Expression

3 ビュー (過去 30 日間)
metty
metty 2019 年 7 月 4 日
コメント済み: metty 2019 年 7 月 16 日
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.
  1 件のコメント
metty
metty 2019 年 7 月 5 日
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.

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

回答 (1 件)

Chidvi Modala
Chidvi Modala 2019 年 7 月 16 日
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.
  1 件のコメント
metty
metty 2019 年 7 月 16 日
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.

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

カテゴリ

Help Center および File ExchangeNumeric Solvers についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by