I need to make sequence (1D vector) from 2 constants in Simulink.
e.g.: x1=1 and x2=10 as input constant
Desired vector: X=[1 2 3 4 5 6 7 8 9 10]
I know It is very easy to generate such vector in matlab, but I really want to do it in terms of blocks and not even Embedded Matlab Function Block.
Thanks in Advance
Mojtaba: Do x1 and x2 change during simulation? If not, try defining them as workspace variables.
I think this is a lot harder to do. You will need to understand Variable-Size Signals because if x1 and x2 change during simulation, the size of the signal also changes. I don't see any easy way to do this without the MATLAB Function block, but even with that block, I think this will be tricky.
check the blocks supported by HDL coder at http://www.mathworks.com/help/hdlcoder/ug/summary-of-block-implementations.html at the end of the page(simulink/User-Defined Functions/MATLAB Function)
MATLAB Function (was Embedded function for previous versions)
14 Comments
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98831
why, whithout matlab function? what do you want to do?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98850
Save x1=1 & x2=10 in base workspace. Take a constant block in simulink & put the value as [x1:x2]
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98869
at t=0; x1 and x2 are unknowns, it will not work
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98870
@Azzi Abdelmalek: x1 and x2 are in base workspace, so they will be evaluated during model update. So at t=0, values will be available in constant block.
Can you let me know how you have tried this ?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98873
TAB, I have simulated your idea, and it did'nt work.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98878
Ok, from "Save x1=1 & x2=10 in base workspace", I mean save these variables manually from command window before simulation.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98884
But during simulation, they can't be updated,I guess x1 and x2 are outputs of other blocks
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98927
Azzi: I think TAB is saying that x1 and x2 should be parameters to the MATLAB Function block, not inputs.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98934
The question said to avoid Matlab function.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98959
Making x1 and x2 as variable and the using a constant block [x1:x2]works but the problem is that x1 and x2 change during the simulation.
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98967
Mojtaba, just one question: matlab functions make our life much easier, why want you avoid them?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_98974
my advisor told me that do not use them because after completing the simulation model we are going to make the code out of it(maybe HDL/PLC code) that if we use embedded matlab block it is not possible to do it. Have you ever heard of it?
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_99042
Matlab function is supported by HDL coder. Depends on verision of matlab you are using
Direct link to this comment:
http://www.mathworks.com/matlabcentral/answers/47926#comment_99068
Mojtaba, If you hints us about your requirement, may be anyone can suggest a better alternative solution.