MATLAB-problema
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
grazie
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

grazie
Risposte
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 :
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.
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.
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
...in realtà così era la prima cosa che doveva venire in mente
. Grazie mille
P.s. si ho il difetto che il codice lo commento solo una volta che ho scritto la "versione definitiva più pulita".


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