ScientiaPotentiaEst
www.facebook.com/profile.php?id=100090584707500
- Registrato
- 27/3/19
- Messaggi
- 461
- Punti reazioni
- 168
Ciao a tutti,
è la prima volta che posto qui, quindi comincio complimentandomi con tutti i partecipanti a questa sezione perché davvero molto bravi e competenti. Vorrei approfittare della vostra competenza per chiedere lumi su un mio dubbio. Sto cercando di imparare a programmare in Matlab, vado per gradi e sto imparando i ''costrutti'' della programmazione, cioè le istruzioni condizionali (if, else if, etc.) e i cicli for e while.
Ora, da quanto ho imparato so che tutto ciò che si può ciclare in for si può ciclare in while, ma non è necessariamente vero il contrario. Per puro esercizio ho scritto un programma che attraverso il ciclo for riesca a restituirmi il valore minimo presente in una matrice e la posizione. In particolare, questo sarebbe lo script:
...
A=input('inserire matrice = ')
[n_rows, n_cols] = size(A);
minimo=A(1,1);
for i=1:n_rows;
for j=1:n_cols;
if A(i,j)<minimo;
minimo=A(i,j);
end
end
end
...
Ciò mi restituisce correttamente il minimo della matrice. Però, volendo fare la stessa cosa usando il ciclo while sbaglio qualcosa di banale, ma non riesco a capire cosa. Usando questo script:
...
minimo=A(1,1);
i=1;
j=1;
while i<=n_rows;
while j<=n_cols;
if A(i,j)<minimo;
minimo=A(i,j);
end
j=j+1;
end
i=1+i;
end
...
In questo caso lo script però mi riporta il minimo soltanto della prima riga... mentre io vorrei che mi restituisse il minimo della matrice.
Sapreste come dovrei modificare il ciclo while affinché Matlab mi restituisca il minimo della matrice?
Grazie in anticipo per l'aiuto,
Fabio
è la prima volta che posto qui, quindi comincio complimentandomi con tutti i partecipanti a questa sezione perché davvero molto bravi e competenti. Vorrei approfittare della vostra competenza per chiedere lumi su un mio dubbio. Sto cercando di imparare a programmare in Matlab, vado per gradi e sto imparando i ''costrutti'' della programmazione, cioè le istruzioni condizionali (if, else if, etc.) e i cicli for e while.
Ora, da quanto ho imparato so che tutto ciò che si può ciclare in for si può ciclare in while, ma non è necessariamente vero il contrario. Per puro esercizio ho scritto un programma che attraverso il ciclo for riesca a restituirmi il valore minimo presente in una matrice e la posizione. In particolare, questo sarebbe lo script:
...
A=input('inserire matrice = ')
[n_rows, n_cols] = size(A);
minimo=A(1,1);
for i=1:n_rows;
for j=1:n_cols;
if A(i,j)<minimo;
minimo=A(i,j);
end
end
end
...
Ciò mi restituisce correttamente il minimo della matrice. Però, volendo fare la stessa cosa usando il ciclo while sbaglio qualcosa di banale, ma non riesco a capire cosa. Usando questo script:
...
minimo=A(1,1);
i=1;
j=1;
while i<=n_rows;
while j<=n_cols;
if A(i,j)<minimo;
minimo=A(i,j);
end
j=j+1;
end
i=1+i;
end
...
In questo caso lo script però mi riporta il minimo soltanto della prima riga... mentre io vorrei che mi restituisse il minimo della matrice.
Sapreste come dovrei modificare il ciclo while affinché Matlab mi restituisca il minimo della matrice?
Grazie in anticipo per l'aiuto,
Fabio