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

Matrixen / Tabellen

 

cosmo.mail
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 22.08.2012, 15:58     Titel: Matrixen / Tabellen
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem: Ich habe eine Tabelle, wo minutenweise alle Eigenbedarfsverbräuche aufgelistet sind (also 1440 Minuten pro Tag, zu jeder Minute der aktuelle Verbrauch). Jetzt habe ich eine zweite Tabelle, wo gelistet ist, zu welcher Minute sich welches Aggregat zuschaltet oder abschaltet. Diese will ich jetzt in die erste Tabelle integrieren, sprich, wenn sich die Feststoffdosierung (FSD) bei Minute 6 anschaltet, soll in die erste Tabelle bis zum ausschalten in die jeweilige Spalte eine 1 geschrieben werden. Beispielsweise wird die FSD bei Minute 10 wieder abgeschaltet. Dann soll von 6-9. Minute eine 1 geschrieben werden und ab der. 10. wieder eine 0 bis zur erneuten Anschaltung:

Tabelle 1:
Minute Verbrauch
4 552
5 554
6 590
7 596
8 598
9 594
10 540
11 545


Tabelle 2;
Minute FSD
6 1
10 0
25 1

Ziel:
Minute Verbrauch FSD
4 552 0
5 554 0
6 590 1
7 596 1
8 598 1
9 594 1
10 540 0
11 545 0

Ich habe mich schon daran versucht, nur will er irgendwie nicht die fehlenden Minuten aus Tabelle 2 (welche ja viel kürzer ist) mit dem vorherigen Wert in die Tabelle 1 integrieren...
Wäre für Hilfe sehr dankbar. Very Happy
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.08.2012, 17:29     Titel:
  Antworten mit Zitat      
Hallo,

vorab folgende Fragen, damit man sieht, ob die Beispieldaten nur zufällig diese relativ schöne Form haben oder ob das immer so ist.

Ist die 1. Spalte der beiden Tabellen jeweils aufsteigend sortiert? Besteht sie ausschließlich aus ganzen Zahlen?

Enthält die 1. Spalte der 1. Tabelle ausschließlich aufeinanderfolgende Zahlen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2012, 06:33     Titel:
  Antworten mit Zitat      
Genau, die erste Spalte der ersten Tabelle ist immer sortiert fortlaufend, wie eine Uhr halt. 60 bedeutet hier also 1 Uhr morgens, 120 2 Uhr morgens, die Daten werden minütlich gesammelt.
 
cosmo.mail
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 23.08.2012, 12:48     Titel:
  Antworten mit Zitat      
Achso, und die erste Spalte ist immer ganzzahlig und sind auch kronologisch geordnet, da sie eben von der jeweiligen Uhrzeit generiert werden.

BG,
Micha
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.08.2012, 12:55     Titel: Re: Matrixen / Tabellen
  Antworten mit Zitat      
Hallo cosmo.mail,

Herzlich willkommen im Forum!

Wenn Du die Inputs in Matlab-Syntax postest, kann man viel leichter eine Lösung erstellen.

Code:
Table1 = [4               552; ...
5               554; ...
6               590; ...
7               596; ...
8               598; ...
9               594; ...
10              540; ...
11              545]

Table2 = [6           1; ...
10         0 ; ...
25         1];

n = size(Table1, 1);
Table2(Table2(:, 1) > n, :) = [];  % Cut out of range values
on = Table2(Table2(:, 2) == 1, 1);
off = Table2(Table2(:, 2) == 0, 1);
index = zeros(n, 1);
index(on) = 1;
index(off) = -1;
index = cumsum(index);
Table2 = cat(2, Table2, index);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cosmo.mail
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 23.08.2012, 13:41     Titel:
  Antworten mit Zitat      
Super, danke Dir schon mal für die Hilfe, werde es beim nächsten mal berücksichtigen.

Bekomme aber bei dem Skript folgende Fehlermeldung:
??? Error using ==> cat
CAT arguments dimensions are not consistent.

Error in ==> test3 at 24
Table2 = cat(2, Table2, index);
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.08.2012, 23:34     Titel:
  Antworten mit Zitat      
Hallo cosmo.mail,

Nachdem ich jetzt wieder Matlab zur Verfügung habe, merke ich, dass dies nicht der einzige Fehler ist. Allerdings war der eine Fehler trivial und man musste nur Table2 durch Table1 ersetzen. Das Mitdenken bei Lösungsversuchen ist durchaus erwünscht.

Nächster Versuch:
Code:
Table1 = [4               552; ...
5               554; ...
6               590; ...
7               596; ...
8               598; ...
9               594; ...
10              540; ...
11              545]

Table2 = [6           1; ...
10         0 ; ...
25         1];

n = size(Table1, 1);
index = zeros(n, 1);
on = Table2(Table2(:, 2) == 1, 1);
off = Table2(Table2(:, 2) == 0, 1);
index(ismember(Table1(:, 1), on)) = 1;
index(ismember(Table1(:, 1), off)) = -1;
index = cumsum(index);
Table1 = cat(2, Table1, index);

Besser?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cosmo.mail
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 24.08.2012, 07:17     Titel:
  Antworten mit Zitat      
Ja super, danke Dir!
Aber ja, ist ja richtig, nur ist das mitdenken so eine Sache, es ist alles für mich noch recht neu, brauch es aber für die Abschlussarbeit, hatte bis jetzt noch keine Zeit zum rein arbeiten, erste Ergebnisse sollen jedoch trotzdem schon kommen. Also dann nochmals Danke für die schnelle Hilfe

Beste Grüße
Micha
Private Nachricht senden Benutzer-Profile anzeigen
 
cosmo.mail
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 24.08.2012, 08:24     Titel:
  Antworten mit Zitat      
Hey, aber nochmal eine ganz blöde Frage zum Verständnis, habe es zwar jetzt hinbekommen, da ich die Tabellen anders aufgebaut habe, jedoch gab es dort noch das Problem, wenn in Tabelle 2 mehrmals aufeinanderfolgend eine Null oder 1 erschien, wurde der index auch immer weiter hoch oder runtergezählt, sprich es erschien dann 1,2,3,4...., in der 3. Spalte wurden die on/off-Werte also immer zum vorherigen Ergebnis hinzu gezählt. Gibt es da auch noch eine solch elegante Lösung, wie die oben, oder geht das dann nur noch umständlich mit for Schleifen und if-Anweisungen?

BG
Micha
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.08.2012, 00:40     Titel:
  Antworten mit Zitat      
Hallo cosmo.mail,

Kannst Du ein Beispiel für die Werte in Table2 posten? Ich kann der Text-Beschreibung nicht folgen. Ist aber auch schon spät...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cosmo.mail
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 26.08.2012, 18:03     Titel:
  Antworten mit Zitat      
HeyJan,

also das Problem ist, das einige Aggregate softwaremäßig unnötige Schaltspiele haben, sodass sie mehrmals innerhalb einer Minute ein und ausgeschaltet werden, womit beispielsweise in der On- und Off-Tabelle einige Minutenwerte mehrfach erscheinen, also das beispielsweise Minute 20 3x erschein und sowohl bei on, als auch bei off, dann fängt er an, nicht Einsen auszugeben, sondern -2.
Gelöst könnte das Problem werden, dass alle Zeilen in On- und Off- gelöscht werden, die in beiden vorkommen. Sprich, wenn Minute 20 sowohl in On, als auch in Off vorkommen sollte, wird diese Zeile bei beidem gelöscht, kommt Minute 20 2x in On vor und 1x in Off wird auch nur eine Zeile gelöscht, die Andere bleibt vorhanden.
Private Nachricht senden Benutzer-Profile anzeigen
 
cosmo.mail
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.08.12
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 27.08.2012, 09:00     Titel:
  Antworten mit Zitat      
Hey,
also hab es jetzt erweitert um:
on1 = on(on(:,1) ~= off(:,1) ,1);
off1 = off(off(:,1) ~= on(:,1) ,1);

damit sind dann alle Zeilen raus, die bei beiden erscheinen, funktioniert leider nur, wenn on und off gleicher Dimension sind, also bei beiden die gleiche Anzahl an Zeilen vorhanden ist. Wie kann ich denn die Dimensionen beider angleichen?
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 - 2025 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.