MATLAB-problema

Cora_931
Buongiorno, sono nuovo del forum, mi trovo alle prese con un esercizio su una distribuzione di Gumbel per un'analisi sulle portate di piena.Ricavati tutti i parametri in Matlab, vorrei eseguire il plottaggio; il numero delle classi è però diverso dal numero dei campioni, il plot quindi non lo posso fare.

faj=[3 8 6 3 2 1]; (frequenza assoluta)
gj=[0.012 0.032 0.024 0.012 0.008 0.004] (densità di probabilità)
Ho pensato a questa soluzione (che funziona ma non mi piace):
g=[gj(1) gj(1) gj(1) gj(2) gj(2) gj(2) gj(2) gj(2) gj(2) gj(2) gj(2) gj(3) gj(3) gj(3) gj(3) gj(3) gj(3) gj(4) gj(4) gj(4) gj(5) gj(5) gj(6)];
praticamente faj è il numero di volte che gj deve comparire in g con il valore gj
solo che vorrei automatizzare il processo...come potri fare?
ho provato svariati cicli for ma non riesco...
so che non è una cosa complicata ma non ne esco :shock:
grazie

Risposte
Pazzuzu
Di sicuro qualche informazione in più e un codice più ordinato e pulito sarebbero stati d'aiuto per chi ti volesse aiutare. Non hai nemmeno specificato chiaramente quale sia il tuo scopo. Immagino che tu debba costruire il vettore g in automatico, è corretto ? Il bello di Matlab è che si può fare tutto in pochissime righe :
clc; clear all;

faj=[3 8 6 3 2 1];
gj=[0.012 0.032 0.024 0.012 0.008 0.004] ;

l_faj = length(faj);
g= zeros(1,sum(faj));

n=1;
for i=1:l_faj
   g(n:(n+faj(i)-1)) = gj(i);
   n=(n+faj(i));
end


Sicuramente esistono modi più eleganti per farlo, ma questo dovrebbe funzionare. Ti invito a verificare che non ci siano errori nel codice, sviste, e a commentarlo per il futuro. Attento, nella prima linea ho chiesto che venga pulito il workspace.

Cora_931
Ringrazio per l'aiuto e mi scuso per non aver postato bene le cose, è che mi sembrava inutile postare il codice senza allegare i txt che uso, comunque il ciclo postato funziona. Io non so per quale motivo mi ero messo in testa di creare un vettore che g in maniera diversa, ma era più articolato e complesso e soprattutto non stava funzionando :roll: ...in realtà così era la prima cosa che doveva venire in mente :oops: . Grazie mille


P.s. si ho il difetto che il codice lo commento solo una volta che ho scritto la "versione definitiva più pulita".

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.