ich habe zwei Funktionen in der ersten definiere ich die Größe der Matrix m=zeros(x*24*60*60*5, 3). Ich weiss, dass meine spätere Matrix, die ich zurückgebe maximal so groß sein wird. In meiner zweiten Funktion wird die Matrix erzeugt und noch etwas bereinigt d.h. die zurückgegebene m Martix ist etwas kürzer als meine vorher definierte Matrix und ich bekomme folgenden Fehlercode:
Code:
Unable to perform assignment because the size of the left side is432000-by-3 and the size of the right side is 431997-by-3.
welchen Code verwendest du denn?
Wie sollen aus den 431997 Zeilen auf der einen Seite die 432000 Zeilen auf der anderen werden?
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 ;)
In meiner Funktion wird die Matrix m erstellt m=zeros(x*24*60*60*5, 3). Wobei x immer für die Anzahl an Datensätzen steht. In der zweiten Funktion wird der Datensatz (432000,3) eingelesen,dabei wird jenach dem der ein oder andere Wert herausgefiltert, sodass nicht immer ganz 432000 Werte zurückgegeben werden. Wie kann ich das am besten machen,dass die Matrix m=zeros(x*24*60*60*5, 3) am Ende angepasst wird, weil ich ja zu Beginn nicht weiss wie viel bei x Datensätzen wie viel Werte rausgefiltert werden. Ich weiss nur,dass meine Matrix maximal 432000,3 groß wird
1.Funktion:
m=zeros(x*24*60*60*5, 3)
for r=1:x
%Daten werden übergeben und zurückgegeben
end
%Die Daten werden in eine Tabelle übergeben
DataMat=table usw.
2. Funktion:
%Daten werden nach einen gewissen Schema gefiltert usw.
das reicht nicht so ganz, um das Problem nachzuvollziehen. Insbesondere ist mir weiterhin nicht klar, wie die 431997 Zeilen und die 432000 Zeilen zusammengefügt werden sollen.
Es könnte darauf hinauslaufen, dass du dir wie in deiner vorherigen Frage "merkst", welche Zeilen entfernt wurden, und diese Zeilen auch aus der größeren Matrix entfernst.
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 ;)
In Funktion 1:
ich würde das Ergebnis von Funktion 2 in eine temporäre Variable schreiben, deren Größe abfragen, und das dann entsprechend nutzen um DatIdx zu kürzen.
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 ;)
es geht um Funktion 1 und speziell die Zeile, die vermutlich die Fehlermeldung wirft. Statt
[DatMat(DatIdx,:),CalcMat(CalcIdx,:)] = funktion_2(....)
meine ich z.B.
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 ;)
Vielen, vielen Dank! Ich habs geschafft alles anzuwenden!
Am Ende werden meine x Datensätze in einem Table an einander gereiht. Kann ich dann ab dem zweiten Datensatz, die Werte zum Beispiel 84803 und 142722 (stehen dann in CalcTable) mit dem jeweils neu ermittelten z.B. size(d) addieren?
Zum Beispiel wenn mein x=2 ist und die Matrix 4321997,3 groß ist. Kann ich dann 84803 und 142722 mit 4321997 addieren. Wenn mein x=3 ist und die Matrix 432000,3 groß ist kann ich dann 84803 und 142722 mit 432000 addieren?
Vielen, vielen Dank! Ich habs geschafft alles anzuwenden!
Wunderbar. Ich hoffe, es läuft nicht nur fehlerfrei, sondern fügt Dinge auch an den richtigen Stellen ein.
Was die Frage jetzt angeht: ich komme da nicht ganz mit.
size(d) ist ein ganz normaler Vektor mit (meist) 2 Elementen, aus dem man mit size(d, dim) direkt ein bestimmtes Element ziehen kann. Klar kann man dazu was addieren, das habe ich ja auch schon in meinem Vorschlag gemacht.
Zitat:
Kann ich dann 84803 und 142722 mit 4321997 addieren
Welche Rolle spielt denn x bei der Sache? Geht es wenn überhaupt nicht eher um r?
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 ;)
x ist die gesamte zahl aller Datensätze und r nur ein Datensatz.
Gibt es noch ein Mittel, wenn ich am Ende meine Werte in Table ablege, dass sich der erste wert nicht auf den zweiten aufsummiert und der dritten Spalte die summe aus ersten,zweiten und dritten Wert steht?
Gibt es noch ein Mittel, wenn ich am Ende meine Werte in Table ablege, dass sich der erste wert nicht auf den zweiten aufsummiert und der dritten Spalte die summe aus ersten,zweiten und dritten Wert steht?
Gibt es ziemlich sicher. Ich weiß nur nicht, wer sich wo auf wen aufsummiert, ob sich das "ersten,zweiten und dritten Wert" nun auf Zeilen oder Spalten summiert oder was der andere Index sein soll, geschweige denn was an den anderen Zeilen bzw. Spalten stehen soll.
Um eine Frage gut zu formulieren, kann es hilfreich sein, sich das selbst nochmal durchzulesen und sich zu fragen: "würde ich das verstehen, wenn ich nicht schon vorher wüsste, was ich will?" Wenn nicht, bitte umschreiben.
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 ;)
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 ;)
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
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.