Pagina 1 di 1

[MATLAB] Problema con la risoluzione di un esercizio

MessaggioInviato: 7 giu 2015, 19:39
da Dearis
Salve a tutti! :D
Sto preparando l'esame di Laboratorio di Informatica e mi sono trovato davanti questo esercizio:

Progettare un M-file per creare un vettore X di 30 elementi reali casuali compresi tra 0 e
100. Calcolare e stampare la media degli elementi e ripetere le operazioni finché la media è
compresa tra 49 e 51. Memorizzare e stampare il numero di iterazioni effettuate. Interrompere
l’esecuzione al raggiungimento di 500 iterazioni.

In linea generale quindi devo:
Creare una matrice 1x30 con elementi tra 0 e 100.
Calcolarne la media.
Se questa è compresa tra 49 e 51 stamparne il valore, altrimenti crearne un'altra.
Ripetere il procedimento per un massimo di 500 volte.

Il codice che ho scritto è quest'ultimo:

Codice: Seleziona tutto
clear all;
close all;
clc;

r = randi(100,1,30);
    M=median(r);
    x=M;

if x>=49 & x<=51
    disp(x);
else
    for i=2:500
    r = randi(100,1,30);
    M=median(r);
    x=M;
    if x>=49 & x<=51
    disp(i);
    disp(x);
    input('Abbiamo avuto la media voluta');
    end
    end
end


Il problema è che il programma si stoppa al raggiungimento della media voluta solo perché chiedo un input inutile all'utente, e se premo invio continua a generare matrici fino alla prossima media "giusta". Come faccio a bloccarne l'esecuzione quando trovo definitivamente quel valore? Grazie a tutti :D

Re: [MATLAB] Problema con la risoluzione di un esercizio

MessaggioInviato: 7 giu 2015, 23:23
da simo85
Dearis ha scritto: Come faccio a bloccarne l'esecuzione quando trovo definitivamente quel valore?

Con l'istruzione break: http://es.mathworks.com/help/matlab/ref/break.html

Re: [MATLAB] Problema con la risoluzione di un esercizio

MessaggioInviato: 8 giu 2015, 8:56
da dimaios
Un piccolo appunto ..... è lecito utilizzare median oppure è corretto utilizzare mean ? ;-)
( Leggi bene il testo del problema )

Re: [MATLAB] Problema con la risoluzione di un esercizio

MessaggioInviato: 9 giu 2015, 7:50
da IsidoroKZ
Usando un while probabilmente viene piu` elegante!