www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Sprunganzahl in Intervallen
Sprunganzahl in Intervallen < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Sprunganzahl in Intervallen: bessere Methode
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 23:26 Sa 12.09.2009
Autor: sorry_lb

Hiho.
Also ich hab einen Vektor der die Sprungzeiten eines Poisson Prozesses angibt. Nehmen wir zum Beispiel den folgenden:

T =

  Columns 1 through 10

    6.5757   13.3526   18.8708   28.2824   33.5601   44.0928   44.7084   56.5159   56.8786   61.4723

  Columns 11 through 20

   76.7178   82.0771   83.6099   84.7590   87.7947   89.6775   90.2398  104.7608  110.7200  126.0948

  Columns 21 through 30

  134.2564  135.8978  137.5281  138.1798  140.8825  154.1302  154.5322  155.6456  161.9053  164.9525

  Columns 31 through 40

  165.0292  166.7018  167.5797  171.7618  175.5302  178.4230  184.9865  186.4314  189.8585  192.0370

  Columns 41 through 42

  197.9294  200.0000

Was ich möchte: ich möchte einen Vektor "anzsprint" (Anzahl Sprünge pro Intervall), der mir -welch Überraschung- angibt, wie viele Sprünge pro Intervall stattgefunden haben. Die Intervalle sind in 10er-Schritten abgegrenzt.

Bisher habe ich die umständliche Variante:

for i=1:h
    if T(i)<=10
        anzsprint(1)=i;
    elseif T(i)>10 && T(i)<=20
        anzsprint(2)=i - anzsprint(1);
    elseif T(i)>20 && T(i)<=30
       anzsprint(3)=i-anzsprint(2)-anzsprint(1);
    elseif T(i)>30 && T(i)<=40
        anzsprint(4)=i-anzsprint(3)-anzsprint(2)-anzsprint(1) ;
    elseif T(i)>40 && T(i)<=50
        anzsprint(5)=i-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>50 && T(i)<=60
        anzsprint(6)=i- anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>60 && T(i)<=70
        anzsprint(7)=i- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>70 && T(i)<=80
        anzsprint(8)=i-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>80 && T(i)<=90
        anzsprint(9)=i-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>90 && T(i)<=100
        anzsprint(10)=i-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>100 && T(i)<=110
        anzsprint(11)=i-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>110 && T(i)<=120
        anzsprint(12)=i-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>120 && T(i)<=130
        anzsprint(13)=i-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>130 && T(i)<=140
        anzsprint(14)=i- anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>140 && T(i)<=150
       anzsprint(15)=i- anzsprint(14)-anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>150 && T(i)<=160
        anzsprint(16)=i-anzsprint(15)- anzsprint(14)-anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>160 && T(i)<=170
        anzsprint(17)=i-anzsprint(16)-anzsprint(15)- anzsprint(14)-anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>170 && T(i)<=180
        anzsprint(18)=i-anzsprint(17)-anzsprint(16)-anzsprint(15)- anzsprint(14)-anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    elseif T(i)>180 && T(i)<=190
        anzsprint(19)=i-anzsprint(18)-anzsprint(17)-anzsprint(16)-anzsprint(15)- anzsprint(14)-anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);
    else T(i)>190 && T(i)<=200
        anzsprint(20)=i-anzsprint(19)-anzsprint(18)-anzsprint(17)-anzsprint(16)-anzsprint(15)- anzsprint(14)-anzsprint(13)-anzsprint(12)-anzsprint(11)-anzsprint(10)-anzsprint(9)-anzsprint(8)-anzsprint(7)- anzsprint(6)-anzsprint(5)-anzsprint(4)-anzsprint(3)-anzsprint(2)-anzsprint(1);

    end
end

Das funktioniert soweit ja auch ganz toll, allerdings möchte ich den Prozess nicht bei der Obergrenze von 200 enden lassen. Und wenn ich in den tausender Bereich gehe... naja das Problem ist bei meiner Variante wohl offensichtlich...
Ich denke, dass man das durch Schleifen lösen könnte, bei meinem Versuch hat er sich allerdings bei der Ausgabe von Nullen überschlagen...

for i=1:h
    for j=0:10:Tmax-10
        if j<T(i)<=j+10
            for k=i:1
                
                                              if (k<2) k=5000001;
                                                  anzsprint(5000000)=0;           %um die ersten Summanden=0 zu haben, da negativer index nicht funktioniert                    
                                              end;
            anzsprint(i)=i-anzsprint(k-1)
            end;
        else break;
        end;
    end;
end;

Hat jemand eine tolle Alternative? Und noch ergänzend gefragt: gibt es eine galantere Lösung zum Umgehen des kleiner-gleich-null-index? hab das Problem öfters in meiner Arbeit und wie ichs oben gemacht hab, is´s unbefriedigend :)

Lieben Dank und gute Nacht.



        
Bezug
Sprunganzahl in Intervallen: Lösung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:16 Mo 21.09.2009
Autor: sorry_lb

also für die, die´s noch interessiert: (keine ahnung warum ich mich so schwer getan hab):


for i=1:h
    anzsprint(i)=0;
end;

T
r=(Tmax-10)/10;

for i=1:h
    for k=0:r
        if ((k*10+0) < T(i)) && (T(i)<= (k*10+10))
            anzsprint(k+1)= anzsprint(k+1)+1;
        else
            anzsprint(k+1)=anzsprint(k+1);
        end
    end
end

X=anzsprint  

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]