2010-04-22 28 views
22

Presto alcuni nuovi studenti, che scriveranno il codice MATLAB. Sono nuovi in ​​MATLAB, ma hanno esperienza nella programmazione in Java e C++.Tutorial MATLAB per programmatori

Ho intenzione di farli passare attraverso la sezione Getting Started della guida di MATLAB. Inoltre, voglio dare un piccolo tutorial con l'obiettivo di impedire loro di fare alcuni degli errori più comuni che le persone compiono quando si passa a MATLAB (es. "MATLAB inizia a contare a 1"), e mostrare loro alcune caratteristiche che potrebbero non essere consapevoli di quando si proviene da altre lingue (ad esempio "è possibile sottrarre uno scalare direttamente da un array, e per i vettori, c'è bsxfun").

Quali sono le cose più importanti che dovrei dire loro?

+13

Non è solo Matlab che inizia a contare a 1 - quasi tutti lo fanno. Sono solo i programmatori infettati da C che iniziano a contare a 0. Se dubiti di me, guarda le dita della tua mano sinistra e inizia a contarle. :-) –

+1

Più seriamente, per cosa scriveranno il codice Matlab? Oggi è un prodotto abbastanza grande e le caratteristiche di interesse nel dominio dell'elaborazione del segnale sono probabilmente diverse dalle caratteristiche di interesse per gli ottimisti numerici. –

+0

@ High Performance Mark: Faranno analisi delle immagini (e qualche ottimizzazione). Non avranno bisogno di caricare i dati dell'immagine, fortunatamente, dato che ho una classe che fa per loro. – Jonas

risposta

15

Basta commenti sprezzante, ecco qualcosa di una risposta troppo:

  1. Il desktop Matlab: quello che tutte le finestre sono per, trascinando il codice dalla storia di nuovo nella finestra di comando, l'ispettore variabile, ecc
  2. Plottaggio: non solo il comando trama, ma come utilizzare gli strumenti grafici della GUI e come creare un M-file da un grafico.
  3. File M per script e funzioni e differenze chiave tra di essi.
  4. M-Lint, il profiler.
  5. Usa Matlab come veicolo per insegnare i pericoli e le insidie ​​dell'aritmetica in virgola mobile.
  6. Richiesta di aiuto: alla riga di comando, sul web, documentazione, scambio di file, ...
  7. Imposta percorso e la directory di lavoro corrente.
  8. Importazione di dati da file, esportazione di dati in file, caricamento e salvataggio.

Questo dovrebbe essere sufficiente per tenerli occupati per un'ora o così.

Per chiarire, propongo questi argomenti per aiutarti a insegnare ai tuoi studenti ad evitare errori comuni di Matlab tra cui;

  1. uso improduttivo dello strumento, ridigitare i comandi che possono essere facilmente richiamate dalla storia, utilizzando C (o Java) comanda la lettura file di stile, invece di uuimport, digitando lentamente script per disegnare elementi grafici quando Matlab può farlo per voi , chiedendosi cosa significano tutte le piccole linee arancioni nel margine destro dell'editor e le sottolineature, cercando di capire da soli quando le strutture di assistenza potrebbero dirgli, tonnellate di altre cose che molti più utenti Matlab hanno impiegato per imparare .
  2. L'aritmetica a virgola mobile non è reale.
  3. e probabilmente anche molte altre cose.
+3

Essere in grado di leggere correttamente l'aiuto è probabilmente la cosa più utile che insegnerò loro (oltre a ottenere un account su SO). – Jonas

+0

Cosa intendi con "l'aritmetica in virgola mobile non è reale"? – Jonas

+0

@Jonas: tutto quello che voglio dire è che l'aritmetica in virgola mobile non implementa esattamente l'aritmetica sui numeri reali. Il monitoraggio regolare di SO mostra che ci sono molti programmatori, inclusi quelli esperti, che impiegano un po 'di tempo per "farlo". –

8

Per quanto riguarda le caratteristiche inaspettate o non-intuitive MATLAB che possono causare loro confusione, ci sono alcune buone indicazioni in questa domanda:

Per quanto riguarda il raffreddamento tempo- trucchi risparmio/efficienza, questa altra domanda ha alcuni esempi:

E per alcuni argomenti potenzialmente più avanzate, è possibile consultare le risposte a questa domanda:

Ora per la mia $ 0,02. In base al tipo di domande che ho visto più frequentemente su SO, direi che vorrai assicurarti che abbiano una buona comprensione dei seguenti concetti:

e qui ci sono alcune caratteristiche interessanti che sono già implementati in MATLAB che possono salvare loro un po 'di tempo e fatica:

+1

Sì, dovrei sicuramente citare 'kron'. Nulla non può essere risolto con quella funzione :) – Jonas

17

sono d'accordo con le risposte precedenti, ma direi indicizzazione è il primo e il concetto più importante e complessa nello studio MATLAB. Ho visto molti programmatori C che iniziano con MATLAB solo scrivere loop, un sacco di loop, qualcosa di ridicolo come

for i=1:10 
    a(i)=i; 
end 

invece di semplice a=1:10;.

Quindi io suggerirei loro di leggere su concetti di programmazione matrice:

  • Come creare vettori e matrici semplici
  • Quali variabili possono essere utilizzate per l'indicizzazione
  • Come creare e applicare gli indici
  • Operazioni logiche e funzioni, indici logici e numerici (funzione di ricerca)
  • Indicizzazione lato destro e sinistro dell'espressione
  • Differenza tra indicizzazione matrici numeriche e matrici di celle
  • Come usare indici come uscita dalle funzioni diverse, come specie, unico, IsMember, ecc
  • Non è possibile applicare gli indici per risultati intermedi

quanto riguarda la produttività , Aggiungerei che è molto utile sapere come utilizzare la modalità Cella dell'editor.

+0

L'indicizzazione è la seconda parte del tutorial (dopo il conteggio). Farò in modo di toccare tutti i tuoi punti. – Jonas

5

MATLAB è concettualmente in un certo senso molto diverso da altre lingue che hai menzionato:

    sono utilizzati
  • cellule sono state Java utilizza upcasting
  • global e persistent variabili sono static in Java
  • gui gestisce essere solo numeri di tipo double
  • le funzioni nidificate sono closures, né Java né C/C++ dispone di tale funzionalità
  • usati raramente private e @type cartelle per la visibilità di scoping
  • la manipolazione di array trucchi
  • molto facile interoperabilità con Java/COM/.NET utilizzando MATLAB sintassi
  • variadic function arguments, la manipolazione degli argomenti delle funzioni con varargin/varargout
  • memorymanagement
+3

Non dirò loro di variabili globali e persistenti nella speranza che non le vedrò mai usarle :). Un sacco di buoni punti, però! I valori globali – Jonas

+2

, no, tuttavia, sono molto utili. Come la statica, forniscono un archivio dati persistente ben localizzato che altrimenti potrebbe essere esposto o utilizzare globalmente. – Marc

10

Per chi proviene dai linguaggi C-familiari, gli operatori elemento-saggio sono nuovi. Mi ci sono voluti un paio di mesi per scoprire gli operatori ./ e .*. Prima di allora, ero solito scrivere cicli per operazioni element-wise. Quindi forse è qualcosa che dovrebbe essere sottolineato.

+2

Questo è esattamente il tipo di risposte che stavo cercando !. Ho pensato di menzionare gli operatori element-element nel passaggio, ora ne farò un più grande chiasso su di esso. – Jonas