Creation of a simulink block from a Mupad expression containing subscripts.
2 次查看(过去 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!