Main Content

Visualizzazione dati in virgola fissa

Nel software Fixed-Point Designer™, l’oggetto fipref determina le proprietà di visualizzazione degli oggetti fi. Gli esempi di codice mostrano generalmente gli oggetti fi come appaiano con le seguenti proprietà dell’oggetto fipref:

  • NumberDisplay'RealWorldValue'

  • NumericTypeDisplay'full'

  • FimathDisplay'full'

Impostando 'FimathDisplay' su 'full' fornisce un modo semplice e veloce per distinguere tra gli oggetti fi con un fimath locale e quelli che sono associati al fimath predefinito. Quando 'FimathDisplay' è impostato su 'full', MATLAB® visualizza le proprietà degli oggetti fimath solo per gli oggetti fi con un fimath locale. MATLAB non visualizza mai le proprietà degli oggetti fimath degli oggetti fi che vengono associati al fimath predefinito. Grazie a questa differenza di visualizzazione è possibile stabilire quali sono gli oggetti fi associati al fimath predefinito, semplicemente guardando l’output.

Inoltre, se non diversamente specificato, gli esempi nella documentazione Fixed-Point Designer utilizzano la seguente configurazione predefinita di fimath:

        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: FullPrecision
               SumMode: FullPrecision

Per ulteriori informazioni sulle impostazioni di visualizzazione, fare riferimento a Set fi Object Display Preferences Using fipref.

Visualizzazione delle proprietà fimath degli oggetti fi

Per vedere come appare l’output nella maggior parte degli esempi di codice Fixed-Point Designer, impostare le proprietà fipref come segue e creare due oggetti fi:

p = fipref('NumberDisplay','RealWorldValue',... 
'NumericTypeDisplay','full','FimathDisplay','full');
a = fi(pi,'RoundingMethod','Floor','OverflowAction','Wrap')
b = fi(pi)

MATLAB restituisce quanto segue:

a = 

    3.1415

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

b = 

    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

MATLAB visualizza le proprietà dell’oggetto fimath nell’output dell’oggetto fi a poiché a ha un fimath locale.

MATLAB non visualizza alcuna proprietà dell’oggetto fimath nell’output dell’oggetto fi b poiché b si associa al fimath predefinito.

Celamento delle proprietà fimath degli oggetti fi

Se si sta lavorando con più oggetti fi che hanno fimath locali, può essere utile disattivare la visualizzazione dell’oggetto fimath:

  • NumberDisplay'RealWorldValue'

  • NumericTypeDisplay'full'

  • FimathDisplay'none'

Ad esempio,

p = fipref('NumberDisplay','RealWorldValue',... 
'NumericTypeDisplay','full','FimathDisplay','none')
p = 

         NumberDisplay: 'RealWorldValue'
    NumericTypeDisplay: 'full'
         FimathDisplay: 'none'
           LoggingMode: 'Off'
      DataTypeOverride: 'ForceOff'
F = fimath('RoundingMethod','Floor','OverflowAction','Wrap');
a = fi(pi, F)
a = 

    3.1415

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Sebbene questa impostazione aiuti a ridurre la quantità di output prodotta, rende anche impossibile definire dall’output se un oggetto fi utilizza il fimath predefinito. Per farlo, è possibile utilizzare la funzione isfimathlocal. Ad esempio,

isfimathlocal(a)
ans =

  logical

   1

Quando la funzione isfimathlocal restituisce 1, l’oggetto fi ha un fimath locale. Se la funzione restituisce 0, l’oggetto fi utilizza il fimath predefinito.

Abbreviazione della visualizzazione del tipo numerico degli oggetti fi

Per ridurre ulteriormente la quantità di output, è possibile impostare NumericTypeDisplay su 'short'. Ad esempio,

p = fipref('NumberDisplay','RealWorldValue',... 
'NumericTypeDisplay','short','FimathDisplay','full');

a = fi(pi)
a = 

    3.1416
      numerictype(1,16,13)