Codice matlab
Ragazzi scusatemi,
ho un vettore a di 5 elementi...impongo un n=5 e voglio creare tutti i possibili vettori di 5 elementi in cui ogni elemento è dato dall'elemento del vettore a + o - n....
esempio se n fosse =1 ed avessi a =[1 2 3 4 5] avrei
b=[2 3 4 5 6] e c=[ 0 1 2 3 4]...
come imposto il ciclo for?
grazie buon natale a chiunque mi dia qualche suggerimento
ho un vettore a di 5 elementi...impongo un n=5 e voglio creare tutti i possibili vettori di 5 elementi in cui ogni elemento è dato dall'elemento del vettore a + o - n....
esempio se n fosse =1 ed avessi a =[1 2 3 4 5] avrei
b=[2 3 4 5 6] e c=[ 0 1 2 3 4]...
come imposto il ciclo for?
grazie buon natale a chiunque mi dia qualche suggerimento
Risposte
Non sono sicuro di aver capito. Credi che il seguente codice farebbe al caso tuo?
b = a + n; c = a - n;
il punto è che in questo caso n=1....però se n=5 deve creare i vettori ottenuti per n=1,2,3,4,5 (anche -1-2-3-4-5)...per esempio se n=2 dovrei avere
b=[2 3 4 5 6] c=[ 0 1 2 3 4] d=[3 4 5 6 7] e=[-1 0 1 2 3].....
inoltre vorrei che "capisse" lui quanti vettori creare senza specificare io a,b,c,d, etc perchè se aumento n (tipo 10) sarebbe difficile calcolare quanti possibili vettori si possono generare con +-n.....non so se mi sono espresso bene...
cmq già grazie mille davvero per l'ìnteresse...spero che puoi aiutarmi un altro po...credo si debba fare un ciclo for (anche perche in realtà i vettori di partenza con 5 elementi sono un centinaio, cioè non ho solo a, e per ognuno devo creare i vettori ottenuti con +-n a partire da quelli iniziali)
b=[2 3 4 5 6] c=[ 0 1 2 3 4] d=[3 4 5 6 7] e=[-1 0 1 2 3].....
inoltre vorrei che "capisse" lui quanti vettori creare senza specificare io a,b,c,d, etc perchè se aumento n (tipo 10) sarebbe difficile calcolare quanti possibili vettori si possono generare con +-n.....non so se mi sono espresso bene...
cmq già grazie mille davvero per l'ìnteresse...spero che puoi aiutarmi un altro po...credo si debba fare un ciclo for (anche perche in realtà i vettori di partenza con 5 elementi sono un centinaio, cioè non ho solo a, e per ognuno devo creare i vettori ottenuti con +-n a partire da quelli iniziali)
Se il numero non è fisso allora non puoi usare variabili con nomi diversi come a, b, c.. Quello che puoi fare è piuttosto creare una matrice in cui le righe (o le colonne) sono i vettori che ti interessano. Un metodo è il seguente:
bsxfun applica la prima funzione binaria (che in questo caso è la somma) ad ogni elemento di entrambe le matrici, eventualmente duplicandole lungo una direzione in cui hanno dimensione uno. È un po' complicato da spiegare, ma ti consiglio di fare qualche esperimento per capire meglio come funziona. È una funzione abbastanza utile in situazioni come questa.
M = bsxfun(@plus, a, (-n:n)');
bsxfun applica la prima funzione binaria (che in questo caso è la somma) ad ogni elemento di entrambe le matrici, eventualmente duplicandole lungo una direzione in cui hanno dimensione uno. È un po' complicato da spiegare, ma ti consiglio di fare qualche esperimento per capire meglio come funziona. È una funzione abbastanza utile in situazioni come questa.
grazie mille....proverò questa cosa in questi giorni...spero di riuscirci...ti aggiorno! buon natale!