MATLAB: problema ciclo for

Messaggioda ninap8 » 18/11/2012, 20:34

Salve, premetto che sono alle primissime armi con matlab e ho bisognoo di qualche info...Mi trovo questo codice:

for k2=9:22
q1(k2)=qbloc*(k2-1);
q2(k2)=(qbloc*k2).*(k2>=1&k2<=22);
Sx2(k2)=quad(f,Ri,Re)*quad(a,q1(k2),q2(k2));
Ac2(k2)=(q2(k2)-q1(k2)).*(Re^2-Ri^2)/2;
xg2(k2)=Sy2(k2)./Ac2(k2);
g12=atan((yg2(k2)-yc12)./(xg2(k2)-xc12));
end

Il risultato è composto da 14 vettori (tanti quanti k2), è possibile creare una matrice che abbia per righe questi vettori?
Mi servirebbe un modo per avere un solo oggetto con cui lavorare...Grazie!
ninap8
Starting Member
Starting Member
 
Messaggio: 1 di 6
Iscritto il: 18/11/2012, 20:09

Re: MATLAB: problema ciclo for

Messaggioda Blackorgasm » 18/11/2012, 20:43

Ciao e benvenuto/a nel forum ;)

Allora non si capisce granché nel codice, comunque ho capito la tua idea e certo che si può fare,
esempio:

for i=1:N
x(i)=*codice*;
end
vettore=x';

così facendo ad ogni passo del ciclo for vai a riempire la i-esima componente di x con il risultato del codice (ovviamente se vuoi che nella i-esima casella ci vada un vettore dovrai fare questo gioco con due indici diversi, quindi due for al limite); ti ho messo anche il trasposto perché come ho scritto io il codice ti viene un vettore colonna e non riga.
Chuck Norris può dividere per 0
Avatar utente
Blackorgasm
Senior Member
Senior Member
 
Messaggio: 691 di 1109
Iscritto il: 10/02/2010, 11:49
Località: Pisano/Fiorentino

Re: MATLAB: problema ciclo for

Messaggioda ninap8 » 18/11/2012, 21:00

Innanzitutto grazie per la risposta veloce...però mi sfugge il modo per fare in modo che nella i-esima casella ci vada un vettore, potresti farmi un esempio con i due cicli for?
Il fatto è che nel mio codice ottengo 14 vettori che sono g12, vorrei invece che g12 fosse una matrice.Spero di comprendere da un esempio ;)
Grazie per la pazienza!
ninap8
Starting Member
Starting Member
 
Messaggio: 2 di 6
Iscritto il: 18/11/2012, 20:09

Re: MATLAB: problema ciclo for

Messaggioda Blackorgasm » 18/11/2012, 21:52

Cerco di scriverti un esempio veloce così su due piedi:

Codice:
for i=1:3
for k=1:3

X(i,k)=2*i*k

end
end



il risultato è :

$X=(( 2 , 4 , 6 ),( 4 , 8 , 12 ),( 6 , 12 , 18 ) )$

Praticamente il ciclo più esterno fissa la riga, mentre il ciclo interno col k scrive le colonne.
Spero di averti passato l'idea di come si ragiona, questo esempio non devi prenderlo alla lettera ;)
Chuck Norris può dividere per 0
Avatar utente
Blackorgasm
Senior Member
Senior Member
 
Messaggio: 692 di 1109
Iscritto il: 10/02/2010, 11:49
Località: Pisano/Fiorentino

Re: MATLAB: problema ciclo for

Messaggioda msole89 » 11/04/2017, 12:49

Ma quando si crea una matrice con un ciclo for, secondo voi è bene sempre inizializzarla con valori zero prima del ciclo oppure è un passaggio superfluo?
msole89
Starting Member
Starting Member
 
Messaggio: 5 di 20
Iscritto il: 24/11/2016, 11:58

Re: MATLAB: problema ciclo for

Messaggioda apatriarca » 11/04/2017, 13:21

Sarebbe meglio di sì in modo da allocare la memoria una singola volta all'inizio. Molti altri linguaggi scientifici non permettono in effetti di ingrandire una matrice in quel modo.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4594 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: MATLAB: problema ciclo for

Messaggioda msole89 » 11/04/2017, 13:38

Grazie! @apatriarca sei sempre di grandissimo aiuto, sei un punto di riferimento per me!
msole89
Starting Member
Starting Member
 
Messaggio: 6 di 20
Iscritto il: 24/11/2016, 11:58


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite