WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Anzahl von Bereichen ungleich 0 herausfinden.

 

newbie123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2018, 14:52     Titel: Anzahl von Bereichen ungleich 0 herausfinden.
  Antworten mit Zitat      
Hi zusammen,

ich erstelle mir mit verschiedenen Loops die angehängte Grafik. Mich interessiert wieviele verschiedene blaue Linien ich für bestimmte Werte bekomme.
Wie kann ich das einfach aus dem Verktor den ich plotte rauslesen?
BTW der Vektor plottet den Imaginärteil, d.h. da wo man nichts sieht ist der imag=0.

D.h. ich möchte für verschiedene a0 und n/nc Werte einen Wert zwischen 0 und 3 bekommen.

Danke für eure Hilfe!

fig1.fig
 Beschreibung:

Download
 Dateiname:  fig1.fig
 Dateigröße:  416.76 KB
 Heruntergeladen:  297 mal


T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2018, 15:55     Titel:
  Antworten mit Zitat      
Du hast also einen Vektor A=[ 1 4 5 2 0 0 0 1 2 3 1 4 0 0 1 4 0 0 1] und möchtest wissen wie viele Abschnitte mit Nullen es gibt? Also für A in dem Fall 3?
Code:

nullAbschnittFlag=false;
abschnittCounter=0;
for i=1:1:numel(A)
    if A(i)==0 && nullAbschnittFlag==false
        nullAbschnittFlag=true;
        abschnittCounter=abschnittCounter+1;
    elseif A(i)~=0
        nullAbschnittFlag=false;      
    end
end
disp(abschnittCounter);
 


Ich wühle mich hier Element für Element durch den Vektor. Immer wenn ich ein Nullelement erwische setze ich nullAbschnittFlag auf true, erkenne damit dass ich mich bereits in einem Nullabschnitt befinde und somit bei der nächsten Null den Zähler nicht weiter erhöhen muss. Treffe ich auf ein Element ungleich 0, dann wird nullAbschnittFlag auf true zurückgesetzt und das nächste Nullelement zählt wieder als neuer Abschnitt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.02.2018, 18:06     Titel:
  Antworten mit Zitat      
Code:

A=[ 1 4 5 2 0 0 0 1 2 3 1 4 0 0 1 4 0 0 1];
A=A>0; % Entfernen unnötiger Informationen
S=A(1:(end-1))-A(2:end); % Identifiziert Sprünge
n=sum(S>0); Zählt aufsteigende Flanken
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
newbie123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2018, 10:44     Titel:
  Antworten mit Zitat      
Vielen Dank! Ich habe das etwas aufwändiger gemacht mit ner for-Schleife und da kamen leider ein paar Fehler rein. Danke dir vielmals!
 
newbie123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2018, 15:32     Titel:
  Antworten mit Zitat      
Allerdings habe ich noch
Code:
S=A(2:end) - A(1:(end-1));

und ein ~= 0 statt >0 gesetzt , da nicht sichergestellt ist dass die Bereiche komplett im Plot liegen.
 
newbie123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2018, 16:27     Titel: Problem aufgetaucht
  Antworten mit Zitat      
Hi zusammen,
mir ist leider erst jetzt ein Fehler aufgefallen:

Ich konvertiere meine Werte in ein logisches Array:
[ 1 0 0 1 1 1 0 1 1 0 1]
und von dem will ich die Anzahl der Bereiche ungleich 0 herausfinden, also 4.

Mit den oben angegebenen Methoden finde ich aber leider die erste oder die letzte Lösung nicht...

LG
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.07.2018, 13:08     Titel: Re: Problem aufgetaucht
  Antworten mit Zitat      
Hallo newbie123,

Code:
x = logical([ 1 0 0 1 1 1 0 1 1 0 1]);
n = nume(strfind([false, x], [false, true]))

Also einfach abzählen, wie oft [0,1] vorkommt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.