|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2005
Messaggi: 26
|
Aiuto Matlab
Scusate, potreste dirmi in un ciclo di for dopo una determinata condizione e dopo aver aggiornato le variabili sempre con il for come faccio a farlo ripartire da zero resettando e riportando la variabile contatore all'inizio?
Se pongo nel for i=1 matlab neanche mi caca e mi dice che ho cambiato l'indice nel loop...come posso fare? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 109
|
Non ho capito bene la domanda: tu hai un ciclo for che ad ogni ciclo controlla una condizione, se questa è rispettata esce dal ciclo altrimenti cambia delle variabili e aggiorna un contatore? cioè, non ho capito bene cosa fa questo ciclo XD
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Sep 2005
Messaggi: 26
|
Il ciclo segue le sue itruzioni e mi aggiorna delle variabili.
Poi c'è un' ultima condizione che io gli do per cambiarmi le condizioni al contorno e dovrei far ripartire lo stesso ciclo di for...io metto la condizione i=1, ma quello non mi caca proprio: % Programmino che permette di visualizzare la traiettoria della caduta di un masso da un pendio % e permette di progettare una Barriera Paramassi %================================================================================================================== clc; clear; % === Disegno di un pendio per punti cartesiani === % Inserisci 6 punti: i primi due sono le posizioni iniziali. xi=0; yi=30; %Il terzo e il quarto sono quelli di P0 relative alle condizioni iniziali (Vox Voy t=0) x0=2; y0=29; %------ x1=4; y1=20; x2=5; y2=12; x3=8; y3=0; x4=20; y4=0; n=2 % varia n per controllare la risoluzione del grafico e deve essere sempre un intero > 1 pendio6punti(xi,yi,x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,n); clc; [mi0,ni0]= RettaPer2(xi,yi,x0,y0); [m01,n01]= RettaPer2(x0,y0,x1,y1); [m12,n12]= RettaPer2(x1,y1,x2,y2); [m23,n23]= RettaPer2(x2,y2,x3,y3); [m34,n34]= RettaPer2(x3,y3,x4,y4); alfai0=atan(mi0); alfa01=atan(m01); alfa12=atan(m12); alfa23=atan(m23); alfa34=atan(m34); % === Triettoria del masso secondo la teoria "Lumped Mass" === % Dati iniziali: Vox=1.5; Voy=-1; t=0:0.001:5;% tempo in secondi g=9.81; % acc. gravità [m/s^2] ax=0; ay=-g; niter=4000; xp=zeros(1,niter); yp=zeros(1,niter); x=zeros(1,niter); y=zeros(1,niter); Vy=zeros(1,niter); eps=0.0001; KN=0.3; KT=0.7; alfa=0; cont=1:niter; for i=cont Vx=Vox; Vy(i)=-g*t(i)+Voy; x(i)=Vox*t(i)+x0; y(i)=(-(1/2)*g*(t(i))^2)+Voy*t(i)+y0; if x(i)<=x1 && x(i)>x0 xp(i)=((((-(1/2)*g*(t(i))^2)+(Voy*t(i))+y0)-y0)*((x1-x0)/(y1-y0)))+x0; yp(i)=y0+(y1-y0)*(((Vox*t(i)+x0)-x0)/(x1-x0)); alfa=alfa01; else if x(i)<=x2 && x(i)>x1 xp(i)=((((-(1/2)*g*(t(i))^2)+(Voy*t(i))+y0)-y1)*((x2-x1)/(y2-y1)))+x1; yp(i)=y1+(y2-y1)*(((Vox*t(i)+x0)-x1)/(x2-x1)); alfa=alfa12; else if x(i)<=x3 && x(i)>x2 xp(i)=((((-(1/2)*g*(t(i))^2)+(Voy*t(i))+y0)-y2)*((x3-x2)/(y3-y2)))+x2; yp(i)=y2+(y3-y2)*(((Vox*t(i)+x0)-x2)/(x3-x2)); alfa=alfa23; else xp(i)=((((-(1/2)*g*(t(i))^2)+(Voy*t(i))+y0)-y3)*((x4-x3)/(y4-y3)))+x3; yp(i)=y3+(y4-y3)*(((Vox*t(i)+x0)-x3)/(x4-x3)); alfa=alfa34; end end end if (x(i)==xp(i)&& y(i)==yp(i))||(x(i)-xp(i)<=eps && y(i)-yp(i)<=eps) x0=xp(i); y0=yp(i); Vpre=sqrt((Vx^2)+(Vy(i))^2); VpreN=Vpre*cos(alfa); VpreT=Vpre*sin(alfa); VpostN=-VpreN*KN; VpostT=VpreT*KT; Vpost=sqrt((VpostN^2)+(VpostT^2)); gamma=atan(VpostN/VpostT); beta=gamma-alfa; Vox=Vpost*cos(beta); Voy=Vpost*sin(beta); i=1; ------->qui mi servirebbe ripartire con il ciclo perchè il tempo deve ricominciare da zero per disegnarmi una nuova parabola end end plot(x,y) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:51.



















