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

richtige Sequenz aufsummieren

 

wgttzs!
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2022, 18:23     Titel: richtige Sequenz aufsummieren
  Antworten mit Zitat      
Hallo liebe Helfer,

folgendes:

Code:
seq= [0     1     1];
event=[156      293      295];
p=rand(432,1);

gefunden_seq = strfind(seq,[0 1]);


punkt=sum(p(event(seq(1)),1):p(event(seq(end)),1)  )/numel(...);


 



Ich habe einen Vektor p, Sequenz seq, die ihre Punkte an der Stelle event findet, wenn folgende Sequenz [0 1] gefunden wird, dann soll punkt berechnet werden. Dafür müsst ich seq in event in finden und zum Beispiel zwischen den Punkten 156 293 in p aufsummieren-funktioniert aber irgendwie nicht. Und am Ende entsprechend mit numel durch die Anzahl teilen.

Kann mir irgendwer weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.425
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.02.2022, 20:38     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe bei dieser Beschreibung nur Bahnhof. Es wäre hilfreich, wenn du z.B. für p = 10*(1:432) schreiben würdest, wie genau sich das Ergebnis zusammensetzen soll.

Zitat:
gefunden_seq = strfind(seq,[0 1]);

Das Ergebnis verwendest du ja nicht weiter. Geht es dir aber nicht genau darum?

Zitat:
punkt=sum(p(event(seq(1)),1):p(event(seq(end)),1) )/numel(...);

Spätestens wenn ein so unübersichtlicher Befehl nicht das macht, was er soll, dann würde ich das mal Teil für Teil auseinandernehmen um zu sehen, welcher Teil denn nicht wie gewünscht funktioniert.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2022, 20:47     Titel:
  Antworten mit Zitat      
Ungefähr so viel Bahnhof kommt auch raus wenn ich es einzeln mir anschaue.

Zitat:
Zitat:
punkt=sum(p(event(seq(1)),1):p(event(seq(end)),1) )/numel(...);

Spätestens wenn ein so unübersichtlicher Befehl nicht das macht, was er soll, dann würde ich das mal Teil für Teil auseinandernehmen um zu sehen, welcher Teil denn nicht wie gewünscht funktioniert.


Ich versuchs nochmal, obwohl ich mir das auch schon irgendwie gedacht habe, was den Knoten in meinem Kopf beschreibt:

gefunden_seq sich mir die Sequenz 0 1 raus aus seq. event=[156 293 295]; gibt mir die Stellen an wo seq= [0 1 1]; gefunden wird. Jetzt versuche ich in p von der Stelle 156 und 293 auf zusummieren, weil an der Stelle genau meine 0(156) und meine 1(293) sich befindet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.425
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.02.2022, 21:02     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ungefähr so viel Bahnhof kommt auch raus wenn ich es einzeln mir anschaue.

Hast du das denn wirklich mal gemacht? Die Code-Stücke aufgeteilt und dir in jedem einzelnen Schritt angesehen, an welcher Stelle nicht das gewünschte herauskommt? Wenn ja, dann teile doch bitte deine Erkenntnisse - also den neuen Code und an der problematischen Stelle wirklich genau, was du statt des erhaltenen Ergebnisses haben möchtest.

Aus der neuen Beschreibung werde ich nämlich leider auch nicht schlauer.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2022, 22:03     Titel:
  Antworten mit Zitat      
Code:
punkt=(p(event(seq(1)))
lkj = (event(seq(1))+1)


also punkt funtioniert so weit und ich bekomme 156 raus, aber mit lkj komme ich nicht auf 293, sondern auf 157
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.425
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.02.2022, 22:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
also punkt funtioniert so weit

Das kann ich mir eigentlich nicht vorstellen, da in der Zeile 4 Klammern geöffnet und nur 3 geschlossen werden.

Zitat:
aber mit lkj komme ich nicht auf 293

Ich komme da nur auf einen Fehler:
Array indices must be positive integers or logical values.
Das verwundert mich auch nicht, da seq(1) = 0.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.