"Io non do consigli. La gente non li segue mai." - R. A. Heinlein
Indice |
Premessa
C'è un comando MATLAB chiamato eval: permette di far eseguire a MATLAB quello che vi pare passandogli una stringa. È estremamente potente, la MathWorks sconsiglia di usarlo. Questo breve articolo lo usa per lavorare sui nomi delle variabili.
Cosa fa esattamente eval
eval prende la stringa che gli avete passato e la fa eseguire a MATLAB: come se l'aveste scritta nella command window battendo poi invio.
Bisogna passare ad eval dei veri e propri comandi, che devono essere validi.
Sintassi di eval e altri costrutti utili per farlo funzionare
eval('stringa che inseriamo come ci pare, cioè un comando')
- Unire in una sola stringa il contenuto di altre stringhe:
stringa_finale = ['stringa1', ' stringa2', 'stringa3']
Nota: la stringa risultante, senza virgolette, sarà: "stringa1 stringa2stringa3"
Attenzione agli spazi. Attenzione alle parentesi quadre.
- Trasformare variabili numeriche in stringhe:
stringaNumeroTrasformato = num2str(variabileNumerica, precisione)
Nota: precisione all'interno di num2str indica il massimo numero di cifre significative che verranno mantenute. precisione può essere omesso, ma a rischio di tagli.
- Unire in un'unica stringa delle variabili numeriche e delle stringhe:
Dichiariamo un paio di variabili numeriche assegnando i valori desiderato. Poi sfruttiamo num2str
indice = 139;
indice_futuro = indice +1;
stringa_finale = ['Indice attuale: ', num2str(indice), '. Il prossimo indice sarà ',...
...num2str(indice_futuro)]
Nota: avremmo potuto eliminare indice_futuro e scrivere direttamente:
indice = 139;
stringa_finale = ['Indice attuale: ', num2str(indice), '. Il prossimo indice sarà ',...
...num2str(indice+1)]
Esempi
Creazione di una variabile
eval('fondazione_politecnico = 1906');
Creazione di 10 variabili i cui nomi sono formati anche dagli indici di un ciclo
for indice = 1 : 10
eval(['frequenza', num2str(indice), ' = 0;']);
end
Creazione di 3 vettori riga da 365 elementi, tutti a zero. I nomi sono numerati dagli indici di un ciclo
for indice2 = 1 : 3
eval(['giorni', num2str(indice), ' = zeros(1, 365);']);
end
Creare 7 funzioni trigonometriche e rappresentarle sullo stesso grafico
numero_funzioni = 7;
x = 0 : 1e-2 : 2;
hold on
for indice1 = 1 : numero_funzioni
eval(['y', num2str(indice1), ' = sin(x.*', num2str(indice1), ');']);
eval(['plot(x, y', num2str(indice1), ');']);
end

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)