Contenuto principale

num2str

Convertire numeri in array di caratteri

Descrizione

Nota

string è consigliata rispetto a num2str per la combinazione di scalari numerici e testo. Utilizzare l'operatore + per combinare stringhe e valori numerici e migliorare la leggibilità. Per ulteriori informazioni, vedere Funzionalità alternative.

s = num2str(A) converte un array numerico in un array di caratteri che rappresenta i numeri. Il formato di output dipende dalle magnitudini dei valori originali. num2str è utile per etichettare e intitolare i grafici con valori numerici.

esempio

s = num2str(A,precision) restituisce un array di caratteri che rappresenta i numeri con il numero massimo di cifre significative specificato da precision.

esempio

s = num2str(A,formatSpec) applica un formato specificato da formatSpec a tutti gli elementi di A.

Nota

Se viene specificato un formato, s non includerà spazi tra gli elementi di A. Per includere gli spazi, aggiungerne uno al formato.

esempio

Esempi

comprimi tutto

Convertire i valori in virgola mobile restituiti da pi e eps in vettori di caratteri.

s = num2str(pi)
s = 
'3.1416'
s = num2str(eps)
s = 
'2.2204e-16'

Specificare il numero massimo di cifre significative per i valori in virgola mobile.

rng('default')
A = randn([2,2]);
s = num2str(A,3)
s = 2×15 char array
    '0.538     -2.26'
    ' 1.83     0.862'

Visualizzare pi come numero in virgola mobile con una precisione specificata.

formatSpec = '%.2f';
s = num2str(pi,formatSpec)
s = 
'3.14'

Argomenti di input

comprimi tutto

Array di input, specificato come array numerico.

Tipi di dati: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Supporto numeri complessi:

Numero massimo di cifre significative nella stringa di output, specificato come intero positivo.

Nota

Se si specifica precision per superare la precisione del tipo di dato di input in virgola mobile, i risultati potrebbero non corrispondere ai valori di input con la precisione specificata. Il risultato dipende dall'hardware e dal sistema operativo del computer.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Formato dei campi di output, specificato utilizzando gli operatori di formattazione. formatSpec può inoltre includere testo ordinario e caratteri speciali.

Se formatSpec include testo letterale che rappresenta caratteri di escape, come \n, num2str traduce i caratteri di escape.

formatSpec può essere un vettore di caratteri tra virgolette singole o uno scalare di stringa.

Operatore di formattazione

Un operatore di formattazione inizia con un segno di percentuale % e termina con un carattere di conversione. Il carattere di conversione è necessario. Opzionalmente, è possibile specificare operatori di identificazione, flag, larghezza del campo, precisione e sottotipo tra % e il carattere di conversione. (Gli spazi non sono validi tra gli operatori e sono qui mostrati solo per motivi di leggibilità).

Schematic of formatting operator characters.

Carattere di conversione

Questa tabella mostra i caratteri di conversione per formattare i dati numerici e di caratteri come testo.

Tipo di valoreConversioneDettagli

Intero, con segno

%d o %i

Base 10

Intero, senza segno

%u

Base 10

%o

Base 8 (ottale)

%x

Base 16 (esadecimale), lettere minuscole af

%X

Come %x, lettere maiuscole AF

Numero in virgola mobile

%f

Notazione in virgola fissa (utilizzare un operatore di precisione per specificare il numero di cifre dopo il punto decimale).

%e

Notazione esponenziale, ad esempio 3.141593e+00 (utilizzare un operatore di precisione per specificare il numero di cifre dopo il punto decimale).

%E

Come %e, ma in lettere maiuscole, ad esempio 3.141593E+00 (utilizzare un operatore di precisione per specificare il numero di cifre dopo il punto decimale).

%g

Il più compatto tra %e e %f, senza zeri finali (utilizzare un operatore di precisione per specificare il numero di cifre significative).

%G

Il più compatto tra %E e %f, senza zeri finali (utilizzare un operatore di precisione per specificare il numero di cifre significative).

Caratteri o stringhe

%c

Carattere singolo

%s

Vettore di caratteri o array di stringhe. Il tipo di testo di output è uguale al tipo di formatSpec.

Operatori opzionali

Gli operatori opzionali di identificazione, flag, larghezza del campo, precisione e sottotipo definiscono ulteriormente il formato del testo di output.

  • Identificatore

    Nota: A differenza della funzione sprintf, num2str non supporta gli identificatori.

  • Flag

    '–'

    Allinea a sinistra.
    Esempio: %-5.2f
    Esempio: %-10s

    '+'

    Stampa sempre un carattere segno (+ o -) per qualsiasi valore numerico.
    Esempio: %+5.2f
    Allinea testo a destra.
    Esempio: %+10s

    ' '

    Inserisce uno spazio prima del valore.
    Esempio: % 5.2f

    '0'

    Riempie la larghezza del campo con zeri prima del valore.
    Esempio: %05.2f

    '#'

    Modifica le conversioni numeriche selezionate:

    • Per %o, %x o %X, stampa il prefisso 0, 0x o 0X.

    • Per %f, %e o %E, stampa il punto decimale anche quando la precisione è 0.

    • Per %g o %G, non rimuove gli zeri finali o il punto decimale.

    Esempio: %#5.0f

  • Larghezza del campo

    Numero minimo di caratteri da stampare.

    Esempio: '%5d' stampa intmax come 2147483647 perché il valore restituito da intmax supera il numero minimo di caratteri da stampare.

    Se il numero di caratteri da stampare è inferiore alla larghezza del campo, la funzione compose riempie lo spazio rimanente nella larghezza del campo con spazi prima del valore, salvo diversamente specificato dai flag.

    Tuttavia, la funzione num2str non riempie lo spazio rimanente nella larghezza del campo con spazi.

  • Precisione

    Numero di cifre da stampare.

    Per %f, %e o %E

    Numero di cifre a destra del punto decimale
    Esempio: '%.4f' stampa pi come '3.1416'

    Per %g o %G

    Numero di cifre significative
    Esempio: '%.4g' stampa pi come '3.142'

    Esempio: '%6.4f' stampa pi come '3.1416'.

    Nota

    Se si specifica un operatore di precisione per i valori in virgola mobile che supera la precisione del tipo di dati numerici di input, i risultati potrebbero non corrispondere ai valori di input con la precisione specificata. Il risultato dipende dall'hardware e dal sistema operativo del computer.

  • Sottotipi

    È possibile utilizzare un operatore di sottotipo per stampare un valore in virgola mobile come valore ottale, decimale o esadecimale. L'operatore di sottotipo precede immediatamente il carattere di conversione. Questa tabella mostra le conversioni che possono utilizzare i sottotipi.

    Tipo di valore di input

    Sottotipo e carattere di conversione

    Tipo di valore di output

    Numero in virgola mobile

    %bx o %bX
    %bo
    %bu

    Valore esadecimale, ottale o decimale a doppia precisione
    Esempio: %bx stampa pi come 400921fb54442d18

    %tx o %tX
    %to
    %tu

    Valore esadecimale, ottale o decimale a precisione singola
    Esempio: %tx stampa pi come 40490fdb

Testo prima o dopo gli operatori di formattazione

formatSpec può anche includere testo ulteriore prima di un segno di percentuale % o dopo un carattere di conversione. Il testo può essere:

  • Testo ordinario da stampare.

  • Caratteri speciali che non possono essere inseriti come testo normale. Questa tabella mostra come rappresentare i caratteri speciali in formatSpec.

    Carattere speciale

    Rappresentazione

    Virgolette singole

    ''

    Carattere percentuale

    %%

    Barra retroversa

    \\

    Allarme

    \a

    Backspace

    \b

    Avanzamento pagina

    \f

    Nuova riga

    \n

    Ritorno a capo

    \r

    Tabulazione orizzontale

    \t

    Tabulazione verticale

    \v

    Carattere il cui valore numerico Unicode® può essere rappresentato dal numero esadecimale N

    \xN

    Esempio: num2str('\x5A') restituisce 'Z'

    Carattere il cui valore numerico Unicode può essere rappresentato dal numero ottale N

    \N

    Esempio: num2str('\132') restituisce 'Z'

Comportamenti significativi delle conversioni con gli operatori di formattazione

  • Se si specifica una conversione che non si adatta ai dati, come una conversione di testo per un valore numerico, MATLAB® sovrascrive la conversione specificata e utilizza %e.

    Esempio: '%s' converte pi in 3.141593e+00.

  • Se si applica una conversione di testo (%c o %s) a valori interi, MATLAB converte i valori che corrispondono a codici di carattere validi in caratteri.

    Esempio: '%s' converte [65 66 67] in ABC.

Argomenti di output

comprimi tutto

Rappresentazione del testo dell'array di input, restituito come array di caratteri.

Suggerimenti

  • num2str non accetta gli identificatori per posizione nell'argomento di input formatSpec. Ad esempio, num2str([14 15],'%2$X %1$o) restituisce un errore.

    Gli identificatori per posizione specificano l'ordine in cui l'operatore di formattazione elabora gli argomenti input della funzione, non gli elementi di un array input. Quando si chiama num2str, è presente un solo argomento di input con numeri da convertire.

  • Se si specifica un operatore di formattazione o un carattere speciale non valido, num2str stampa tutto il testo fino all'operatore o al carattere non valido e scarta il resto.

    Esempio: se formatSpec è 'value = %z', num2str stampa 'value =' in quanto %z non è un operatore di formattazione.

    Esempio: se formatSpec è 'character \x99999 = %s', num2str stampa 'character' in quanto \x99999 non è un carattere speciale valido.

  • Si consiglia di utilizzare mat2str quando si convertono valori numerici in testo come parte dell'input per eval.

Algoritmi

num2str taglia eventuali spazi iniziali da un array di caratteri, anche quando formatSpec include un flag di carattere spazio. Ad esempio, num2str(42.67,'% 10.2f') restituisce un array di caratteri 1x5 '42.67'.

Funzionalità alternative

Aggiornare il codice che utilizza num2str per combinare scalari numerici con il testo in modo da poter invece utilizzare string. I valori numerici possono essere combinati con le stringhe utilizzando l'operatore +. Ad esempio:

Non consigliatoConsigliato
newstr = ['The value is ' num2str(4.5)]
newstr =

    'The value is 4.5'
newstr = "The value is " + 4.5
newstr =

    "The value is 4.5"

Funzionalità estese

espandi tutto

Cronologia versioni

Introduzione prima di R2006a

espandi tutto