2016-05-18 8 views
0

Ich habe folgenden CodeWie man dies in Matlab plant?

xr=randi([1 150],1,20) 
    z=numel(xr); 
    N=10; %Window length 
    gAll=zeros(1,z-N+1); 
    for n=0:z-N; 
     x=xr(1+n:N+n) 
     d=max(x); 
     m=numel(x); 
     y=zeros(d,1); 
     p=zeros(d,d); 
     for k=1:m-1 
     y(x(k))=y(x(k))+1; 
     p(x(k),x(k+1))=p(x(k),x(k+1))+1; 
     end 
     p=bsxfun(@rdivide,p,y); 
     p(isnan(p)) = 0; 
     j=prod(p(p~=0)); 
     [~,~,idx] = unique(x); 
     q=prod(hist(idx,1:max(idx))/numel(x)); 
     s=log(j); 
     l=log(q); 
     g=s+l 
    gAll(n+1)=g; 
    end 
    plot(gAll) 

Ich mag ein Grundstück so ein, dass für die Schwellenlinie von Gall = -22, obiger Grafik Schwellenlinie sollte unter Schwellenlinie sollte in der roten Farbe und Graph in blau, aber Graph sollte in kontinuierlicher Verbindung mit diesen zwei verschiedenen Farben, wie es geht.

+0

Statt 'y (x (k)) = y (x (k)) + 1 'in der Schleife, rufe 'tabulate (x)' (vor der Schleife) auf und nimm dann die zweite Spalte. – EBH

Antwort

0

Sie können Bereiche des Diagramms maskieren, indem Sie Werte auf NaN setzen. Ich würde einen Interpolator mit hoher Auflösung der Daten gAll erstellen, dann zwei Copies erstellen, einen mit gAll>-22 maskiert und einen mit gAll<-22 maskiert und plotten sie auf den gleichen Achsen.

Sie könnten gAll_HR eine hochauflösende Version des Vektors gAll auf x_HR mit interp1(x, gAll, x_HR) machen, dann Werte ersetzen mit NaN unter Verwendung von logischer Indizierung:

gAll_low = gAll_HR; 
gAll_low(gAll_HR>=-22) = NaN; 
gAll_high = gAll_HR; 
gAll_high(gAll_HR<-22) = NaN; 

plot(x_HR, gAll_low, 'b-', x_HR, gAll_high, 'r-') 
+0

Ich verstehe nicht, kann den ganzen Code posten, damit ich ihn direkt ausführen kann. –

+0

@RamShivshankar einfach schreiben: 'x_HR = 1: 0.01: max (x);' (anstelle von '0,01' können Sie wählen, welche Auflösung Sie wollen, versuchen und den Unterschied sehen) dann' gAll_HR = interp1 (x, gAll , x_HR); ' dann kopieren Sie den Code von oben, und es wird funktionieren. Wenn Sie es nicht kleine Vektoren wie in den Beispielen ausführen, können Sie den Fehler erhalten _Die Gittervektoren sind nicht streng monoton steigend._, obwohl ich nicht weiß, was es bedeutet ... – EBH

Verwandte Themen