What can I write in a MATLAB function block in Simulink?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Maria
el 12 de Dic. de 2017
Comentada: Birdman
el 13 de Dic. de 2017
Hi I am working with Simulink. I wrote a function in Matlab that basically does a circular shift, and I wanted to put it into Simulink by using the MATLAB function block. The thing is that if I write
function y= shift_with0(u,s)
y = circshift(u,s);
y(1:s)=0;
end
no problem and everything is working. But, I wanted to allow as inputs also vectors, so I wrote this function
function y= shift_with0(u,s)
if isvector(s)
pm=sign(s);
inegatif = sum(pm(:)==-1);
s = inegatif;
end
y = circshift(u,s);
y(1:s)=0;
end
In Matlab is working, but the Simulink block not. So, I assume that is the "if" part that Simulink does not accept. In general, could someone clarify for me what I can write/not write in a MATLAB function block? Thanks
Respuesta aceptada
Más respuestas (1)
KL
el 12 de Dic. de 2017
If s is a vector, I will just count the number of negative entries, and then shift the y by this amount
Shouldn't you be simply writing,
...
if numel(s)>1
s = numel(s(s<0));
end
y = circshift(u,s);
...
3 comentarios
KL
el 12 de Dic. de 2017
Editada: KL
el 12 de Dic. de 2017
The difference between matlab and simulink is not only with the block based modelling but also its code generating abilities. The matlab-function block gives you the ability to do that and of course it comes with a restriction. This is why you use extrinsic command for some matlab functions inside simulink.
Unlike matlab, when you assign/reassign you have to mind certain things in simulink environment.
You can read more to understand why this happens. Documentation is the best place to learn how things work.
Ver también
Categorías
Más información sobre Sources en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!