Creation of a simulink block from a Mupad expression containing subscripts.
1 回表示 (過去 30 日間)
古いコメントを表示
Hello fellow Matlabers,
My goal is to generate a simulink block from a Mupad expression.
In Mupad I wrote:
S := sum(sin(`θ`[j])*cos(`θ`[j]), j=1..5)
and I got the symbolic expression:
cos(`θ`[1])*sin(`θ`[1]) + cos(`θ`[2])*sin(`θ`[2]) + cos(`θ`[3])*sin(`θ`[3]) + cos(`θ`[4])*sin(`θ`[4]) + cos(`θ`[5])*sin(`θ`[5])
displayed in the Mupad Notebook.(see the attached image).
So my goal is to generate directly from the expression S := sum(sin(`θ`[j])*cos(`θ`[j]), j=1..5) the simulink block that you can see in the block_picture.PNG (attached).
I have created this block using the code below inside a MATLAB Function block:
function S = fcn(theta1, theta2, theta3, theta4, theta5) %#codegen
S = cos(theta1)*sin(theta1) + cos(theta2)*sin(theta2) + cos(theta3)*sin(theta3) + cos(theta4)*sin(theta4) + cos(theta5)*sin(theta5) ;
But the problem is that I will be using long expression for S with many theta(j)'s (j=1...............20).
So I need to use an expression like:
S := sum(sin(`θ`[j])*cos(`θ`[j]), j=1..20)
inside the Matlab Function block because I will save a lot of time.
1 件のコメント
Karan Gill
2017 年 11 月 15 日
編集済み: Karan Gill
2017 年 11 月 15 日
Why are you using MuPAD instead of Symbolic Math Toolbox? MuPAD notebooks are not recommended.
採用された回答
Yogananda Jeppu
2017 年 11 月 13 日
Use Mux block to get theta 1 ... N. You need so many inputs. The Mux will create the array for you. Take this as a single input u into the model (Matlab function). in the function compute y = sum(sin(u).*cos(u)). note the '.*' for element multiplication.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Special Values についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!