Nelle vecchie versioni di MATLAB, c'era una buona ragione per evitare l'uso di i
e j
come nomi di variabili - le prime versioni di MATLAB JIT non erano abbastanza intelligenti da dire se le stavi usando come variabili o come unità immaginarie, e quindi disattiva molte ottimizzazioni altrimenti possibili.
Il tuo codice sarebbe quindi più lento solo per la presenza stessa di i
e j
come variabili e accelererebbe se le cambiassi in qualcos'altro. Ecco perché, se leggi molto codice MathWorks, vedrai ii
e jj
utilizzerai abbastanza ampiamente come indici di loop. Per un po ', MathWorks avrebbe persino potuto consigliare alle persone ufficiosamente di farlo da soli (anche se consigliano sempre ufficialmente alle persone di programmare l'eleganza / la manutenibilità piuttosto che qualunque cosa faccia l'attuale JIT, poiché è un obiettivo mobile ogni versione).
Ma è molto tempo fa, e al giorno d'oggi è un po 'un problema di "zombi" che è davvero molto meno importante di quanto molti pensano ancora, ma rifiuta di morire.
In qualsiasi versione recente, è davvero una preferenza personale se usare i
e j
come nomi di variabili o meno. Se lavori molto con numeri complessi, potresti voler evitare i
e j
come variabili, evitare qualsiasi piccolo potenziale rischio di confusione (anche se potresti anche / invece voler usare solo 1i
o 1j
per meno confusione e prestazioni leggermente migliori ).
D'altra parte, nel mio lavoro tipico non ho mai a che fare con numeri complessi e trovo il mio codice più leggibile se mi sento libero di usare i
e j
come indici di loop.
Vedo molte risposte qui che dicono che non è raccomandato ... senza dire chi lo sta facendo raccomandando. Ecco la portata delle attuali raccomandazioni di MathWorks, dalla documentazione di rilascio corrente per i
:
Poiché i è una funzione, può essere sovrascritta e utilizzata come variabile. Tuttavia, è meglio evitare di usare i e j per i nomi delle variabili se si intende usarli in aritmetica complessa. [...] Per la velocità e una maggiore robustezza, è possibile sostituire i e j complessi con 1i.
i
,j
,k
come i nomi delle variabili ciclo generici.