Contenuto principale

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Creazione di dati in virgola fissa in MATLAB

R2025b

Gli esempi seguenti illustrano come creare dati in virgola fissa utilizzando l’oggetto Fixed-Point Designer™ fi.

Esempio 1. Creazione di un numero in virgola fissa con le proprietà predefinite

Chiamando fi su un numero produce un numero in virgola fissa con firma predefinita e lunghezze predefinite della parola e della frazione.

 fi(pi)
ans =
 
    3.1416

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

Esempio 2. Creazione di un numero in virgola fissa con firma, lunghezza della parola e lunghezza della frazione specificate

È possibile specificare la firma (1 con firma, 0 senza firma) e le lunghezze della parola e della frazione.

fi(pi,1,15,12)
ans =
 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 15
        FractionLength: 12

È possibile utilizzare il costruttore fi per assegnare un tipo di dati in virgola fissa a un numero o a una variabile. All’interno del costruttore fi è possibile specificare le proprietà numerictype e fimath. Esistono due modi per creare un oggetto fi:

Ogni oggetto fi ha un oggetto numerictype associato. L’oggetto numerictype memorizza le informazioni sull’oggetto fi, inclusa la lunghezza della parola, la lunghezza della frazione e la firma. Le proprietà numerictype possono essere specificate nel costruttore fi, o assegnate successivamente a un oggetto fi.

L’oggetto numerictype in MATLAB è equivalente all’oggetto fixdt in Simulink®.

Per ulteriori informazioni sulle proprietà degli oggetti numerictype, vedere numerictype Object Properties.

Esempio 3. Creazione di valori interi in virgola fissa

Per creare dei valori interi in virgola fissa, specificare 0 come lunghezza della frazione.

fi(1:25,0,8,0)
ans =
 
  Columns 1 through 13
     1   2   3   4   5   6   7   8   9  10  11  12  13
  Columns 14 through 25
    14  15  16  17  18  19  20  21  22  23  24  25

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0

Esempio 4. Creazione di un array di valori casuali in virgola fissa

fi(rand(4),0,12,8)
ans =
 
    0.1484    0.8125    0.1953    0.3516
    0.2578    0.2422    0.2500    0.8320
    0.8398    0.9297    0.6172    0.5859
    0.2539    0.3516    0.4727    0.5508

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 12
        FractionLength: 8

Esempio 5. Creazione di un array di zero

Quando si scrive un codice, a volte si desidera testare i diversi tipi di dati delle variabili. Separare i tipi di dati delle variabili dall’algoritmo rende il test molto più semplice. Creando una tabella di definizioni del tipo di dati, è possibile commutare la funzione, a livello di codice, tra tipi di dati in virgola mobile e tipi di dati in virgola fissa. L’esempio seguente mostra come utilizzare questa tecnica e creare un array di zero.

 T.z = fi([],1,16,0);

z = zeros(2,3,'like',T.z)
z = 

     0     0     0
     0     0     0

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

Nota

Per l’esempio completo sull’implementazione di questa tecnica, vedere Implement FIR Filter Algorithm for Floating-Point and Fixed-Point Types Using cast and zeros.