# Creation of a simulink block from a Mupad expression containing subscripts.

4 views (last 30 days)
kamal kiki on 7 Nov 2017
Edited: Karan Gill on 15 Nov 2017

Hello fellow Matlabers,

My goal is to generate a simulink block from a Mupad expression.

```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 Comment

Karan Gill on 15 Nov 2017

Yogananda Jeppu on 13 Nov 2017
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.

#### 1 Comment

kamal kiki on 14 Nov 2017
Hi Mr. Yogananda,
I have used your approach before but in a more complicated format: I typed inside the "Fcn" block
y= sin(u(1))*cos(u(1))+sin(u(2))*cos(u(2))+sin(u(3))*cos(u(3)).......
But your idea about the use of the much shorter format with the '.*' is very helpful. It works with the "interpreted MATLAB function" block.
Thank you again, I will save time with that.