Sottomatrice e media

di il
3 risposte

Sottomatrice e media

Salve, sono uno studente che si è ritrovato a dover usare matlab con pochissimo supporto vorrei chiedervi come potrei scrivere lo script di questo esercizio

"Posta una matrice, crea una sottomatrice con i valori sotto la media"

3 Risposte

  • Re: Sottomatrice e media

    Quante dimensioni ha la matrice? 2 (m x n)?, 3 (m x n x z)? , ...
    Hai fatto almeno un tentativo? Dovresti pubblicare il codice che hai scritto, in modo che ti si possa aiutare.
    Qual è il problema specifico che stai incontrando?

    In MatLab, una matrice generica del tipo, per esempio, (m x n) ognuna delle "m" righe deve avere "n" colonne e, di conseguenza, ognuna delle "n" colonne deve avere "m" righe (in pratica, non ci possono essere "locazioni" vuote).
    A meno che non si voglia usare un "cellarray"?

    Come deve essere costruita la matrice di output?
    Deve essere una matrice o può essere un "cellaaray"?

    Nel caso l'output debba essere una matrice, ragionando per "righe" (ma lo stesso si può fare "per colonne"), è molto probabile che, partendo da una matrice (m x n), la prima riga abbia un numero di elementi inferiori alla media diverso da quello della seconda riga ecc.

    In questo caso, non puoi creare una matrice con i soli valori inferiori alla media (per le ragioni sopra descritte).
    Quello che puoi ottenere è una matrice con le stesse dimensioni della matrice di partenza (m x n) con un valore particolare (ad esempio "NaN", oppure, -999, ...) nelle locazioni nelle quali la condizione non è verificata.
  • Re: Sottomatrice e media

    Allora la matrice è a mio piacere. Avevo preso questo script per la media:

    A = rand(2,3,4)
    m=size(A)
    sum = 0
    % Calcolo media aritmetica
    for i=1:m(1)
    for j=1:m(2);
    sum=sum+A(i,j);
    end
    end
    v= sum/( m(1)*m(2)

    è giusto?
    Come dovrei continuare?
  • Re: Sottomatrice e media

    ...è giusto?
    Hai provato ad eseguire il codice che hai scritto?
    Ottieni il valore corretto della media?

    Lo script per il calcolo della media non è corretto: a parte i fatto che nell'istruzione
    v= sum/( m(1)*m(2)
    manca una parentesi al fondo, hai creato una matrice a tre dimensioni (m x n x z)
    A = rand(2,3,4)
    ma hai impostato solo due cicli for mentre dovrebbero essere tre, uno per ogni dimensione.

    Ad ogni modo. per il calcolo della media puoi usare direttamente la funzione "mean"; dai un'occhiata alla documentazione per i dettagli.
    Come dovrei continuare?
    Non hai risposto alle domande che ti ho posto nella risposta precedente: se non chiarisci quale tipo di output vuoi ottenere non ti si può aiutare.
    In MatLab, una matrice generica del tipo, per esempio, (m x n) ognuna delle "m" righe deve avere "n" colonne e, di conseguenza, ognuna delle "n" colonne deve avere "m" righe (in pratica, non ci possono essere "locazioni" vuote).
    A meno che non si voglia usare un "cellarray"?

    Come deve essere costruita la matrice di output?
    Deve essere una matrice o può essere un "cellaaray"?

    Nel caso l'output debba essere una matrice, ragionando per "righe" (ma lo stesso si può fare "per colonne"), è molto probabile che, partendo da una matrice (m x n), la prima riga abbia un numero di elementi inferiori alla media diverso da quello della seconda riga ecc.

    In questo caso, non puoi creare una matrice con i soli valori inferiori alla media (per le ragioni sopra descritte).
    Quello che puoi ottenere è una matrice con le stesse dimensioni della matrice di partenza (m x n) con un valore particolare (ad esempio "NaN", oppure, -999, ...) nelle locazioni nelle quali la condizione non è verificata.
Devi accedere o registrarti per scrivere nel forum
3 risposte