how to convert file.m into block in Simulink ?

1 vue (au cours des 30 derniers jours)
Henry Buck
Henry Buck le 3 Mar 2016
Commenté : Henry Buck le 4 Mar 2016
hi,
I wrote a function that produce 40 binary bits vector according to another 20 bits vector. In Matlab it works ok.
I want to convert it into a blockqmodel in Simulink.
Anybody knows how to do it ?
for example:
function gate_h = gate_array(I_H, indx_h)
no_cells = 20;
if(I_H > 0)
TMP_reg = [zeros(1, no_cells-indx_h), ones(1, indx_h)];
else
TMP_reg = [ones(1, indx_h), zeros(1, no_cells-indx_h)];
end
bitpatterns = {[0 1], [1 0]};
gate_h = cell2mat(bitpatterns(TMP_reg + 1));
Thanks, Henry

Réponse acceptée

Walter Roberson
Walter Roberson le 4 Mar 2016
Try using the following as a MATLAB Function block
function gate_h = gate_array(I_H, indx_h)
no_cells = 20;
gate_h = zeros(1, no_cells * 2);
gate_h(1:2:indx_h*2) = 1;
gate_h(indx_h*2+1:2:no_cells*2-1) = 1;
if I_H > 0
gate_h = 1 - gate_h;
end
  5 commentaires
Henry Buck
Henry Buck le 4 Mar 2016
Modifié(e) : Walter Roberson le 4 Mar 2016
Hi,
I made a simple change and it seems to be works ok.
%%%%%%%%%%%%
function gate_h = gate_array_h6(I_H, indx_h)
no_cells = 20;
gate_h = zeros(1, no_cells * 2);
gate_h(1:2:indx_h*2) = 0;
gate_h(indx_h*2+1:2:no_cells*2-1) = 0;
if I_H > 0
gate_h(2:2:(no_cells-indx_h)*2) = 1;
gate_h((no_cells-indx_h)*2+1:2:no_cells*2-1) = 1;
else
gate_h(1:2:indx_h*2-1) = 1;
gate_h((indx_h+1)*2:2:no_cells*2) = 1;
end
%%%%%%%%%%%%
No E R R O R at all ....:-)).
Thanks a lot,
Henry
Henry Buck
Henry Buck le 4 Mar 2016
Hi,
For changing direction of the gate_h bits vector to complement gate_l bit vector, what do I need to change ? for example: in one block I got gate_h= [0 1 0 1 0 1 0 1 1 0 1 0]. and in anothe block I want to get gate_l = [1 0 1 0 1 0 1 0 0 1 0 1].
its like gate_l is complement of gate_h

Connectez-vous pour commenter.

Plus de réponses (1)

Rick Rosson
Rick Rosson le 4 Mar 2016
Have you tried using the MATLAB Function block? It's in the User Defined Functions sub-library in base Simulink.
  2 commentaires
Henry Buck
Henry Buck le 4 Mar 2016
Yes I did, But when I add that code into MATLAB Function code, after running I got lots of error relate to the code above.
I dont know how solve it.
Thanks, Henry
Henry Buck
Henry Buck le 4 Mar 2016
Hi, I made a simple change and it seems to be works ok.
%%%%%%%%%%%% function gate_h = gate_array_h6(I_H, indx_h)
no_cells = 20; gate_h = zeros(1, no_cells * 2); gate_h(1:2:indx_h*2) = 0; gate_h(indx_h*2+1:2:no_cells*2-1) = 0;
if I_H > 0 gate_h(2:2:(no_cells-indx_h)*2) = 1; gate_h((no_cells-indx_h)*2+1:2:no_cells*2-1) = 1; else gate_h(1:2:indx_h*2-1) = 1; gate_h((indx_h+1)*2:2:no_cells*2) = 1; end %%%%%%%%%%%%
No E R R O R at all ....:-)).
Thanks a lot, Henry

Connectez-vous pour commenter.

Catégories

En savoir plus sur Simulink Functions dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by