Azzera filtri
Azzera filtri

How can i use the 'mod' function in an Embedded Matlab function?

2 visualizzazioni (ultimi 30 giorni)
I have the following function. I want to use this algorithm in an embedded Matlab function in simulink.
function y = fcn( u )
y=[0;0;0;0;0;0;0;0;0;0];
newu=0;
nr=0;
s=false;
if u<0 s=true;
end
while u~=0
newu=newu*10+mod(u,10);
u=(u/10);
nr=nr+1;
end;
for i=nr:0
y(i)=mod(newu,10);
newu=(newu/10);
end;
for i=0:nr
y = y+65;
end
end
After compilation it gives me the error :'Function 'mod' is not defined for values of class 'embedded.fi'. 'u'(input value) being of class 'embedded.fi'. What do i have to change to get my output value?
Thank you, Zoli
  15 Commenti
Walter Roberson
Walter Roberson il 19 Dic 2012
Double-check the parity of the line. But even more so, double check how the heck an 8 bit result is generating a negative number below -128, as 8 bit signed values can only be in the range -128 to +127 . Check your scope settings.

Accedi per commentare.

Risposte (1)

Azzi Abdelmalek
Azzi Abdelmalek il 17 Dic 2012
Modificato: Azzi Abdelmalek il 17 Dic 2012
In the below part of your code
while u~=0
newu=newu*10+mod(u,10);
u=(u/10);
nr=nr+1;
end;
newu increases rapidly to infinity. that's what causes a problem when
y(i)=mod(newu,10);
  6 Commenti
Azzi Abdelmalek
Azzi Abdelmalek il 17 Dic 2012
Modificato: Azzi Abdelmalek il 17 Dic 2012
Yes, but after 309 iterations, 10^309=inf
In the above example, nr=324
Walter Roberson
Walter Roberson il 17 Dic 2012
This is only a problem if the fi object has a representation for infinity and if the input is infinity. Otherwise abs(u) is diminishing in each step and there would be a finite end to the process. It could potentially overflow the buffer of 10 y locations, but that would depend upon the maximum value possible for that particular fi object.

Accedi per commentare.

Categorie

Scopri di più su Simulink Environment Customization in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by