2009-12-05 9 views
10

Come si crea un array definito con un punto iniziale, un punto finale e una dimensione totale dell'array? Qualcosa come un array che va da 1 a 10 che è lungo 20 elementi. Ad esempio, l'array potrebbe essere simile: vettoriCome si crea un array di valori con spaziatura regolare in MATLAB?

1 1.5 2 2.5 3 3.5 ... 
+0

Nel vettore di esempio si dà, passando da 1 a 10 in passi di 0,5 sarebbe darti un vettore di 19 elementi, non 20. – gnovice

+0

19 - Ho contato sulle mie dita. Non ho trovato il mio abaco. – Doresoom

risposta

18

ci sono un paio di modi si può fare questo:

  • utilizzando il colon operator:

    startValue = 1; 
    endValue = 10; 
    nElements = 20; 
    stepSize = (endValue-startValue)/(nElements-1); 
    A = startValue:stepSize:endValue; 
    
  • Uso della funzione linspace (come suggerito da Amro):

    startValue = 1; 
    endValue = 10; 
    nElements = 20; 
    A = linspace(startValue,endValue,nElements); 
    

Tenere presente che il numero di elementi nelle matrici risultanti comprende i punti finali. Negli esempi precedenti, la differenza tra i valori degli elementi dell'array sarà 9/19 o un po 'inferiore a0.5 (a differenza dell'array campione nella domanda).

10

linspace genera distanziati in modo lineare:

>> A = linspace(1, 10, 20-1) 
ans = 
1 1.5 2 2.5 3 3.5 ... 9.5 10 
+0

n.b. 'linspace' emette i vettori * row *; qui in terra di ottimizzazione, tutti i vettori sono vettori di colonne. state attenti. – shabbychef

+2

l'OP vuole creare un array con 20 elementi e stai parlando di una ottimizzazione trascurabile (che potrebbe anche non essere il caso !!) – Amro

5

Semplice one-liner!

1:0.5:10; 

uscita:

1 1.5 2 2.5 ... 9 9.5 10 

noti che questo sarebbe un vettore 19 elementi, non 20.

+0

No, questo sarebbe un vettore * 19-element *. Includerebbe i numeri interi da 1 a 10 (di cui ci sono 10), insieme ai punti medi tra ogni coppia di numeri interi (di cui ci sono 9). – gnovice

+0

@gnovice: Grazie per l'avviso. – Zaid