vec = [0,1,1,1,0,0,0,0,2,2,2,0,0,1] ;
begin = find(diff(vec)>0)+1;
NullVec = zeros(1,length(vec));
NullVec(1,begin) = vec(1,begin); % das ist dein Ergebnis
klar doch
Der erste Befehl "diff" macht folgendes
[vec(2)-vec(1) vec(3)-vec(2) ....] hintereinander folgende gleiche Werte löschen sich somit aus.
Mit dem Befehl "find" finden wir die gesuchten Indices, aber da sie aufgrund von "diff", um eine Stelle nach vor gerutscht sind schieben wir sie einfach mit +1 an ihre eigentlichen Stellen.
Und der Reste ist einfach Matrixoperation in Matlab.
Wenn ich das richtig verstanden habe, willst du die Operation nicht mit einem Vektor sondern mit einer Matrix durchführen. Habe den Code von Vito hier übernommen:)
versuch immer möglichst ohne Schleifen zu arbeiten. Hier ist ein Beispiel mit einer Matrix mit Reihen von 1en und 2en:
Code:
%Erstellen der Bespielmatrix
Mpart1 = [0,1,1,1,0,0,0,0,2,2,2,0,0,1]' ;
Mpart2 = [0,0,1,1,0,0,0,2,2,2,2,0,1,1]' ;
Mat = zeros(14,2);
Mat(:,1) = Mpart1;
Mat(:,2) = Mpart2;
% Umwandlung der Matrix in Vektor
vec = reshape(Mat,[],1);
begin = find(diff(vec)>0)+1;
NullVec = zeros(length(vec),1);
NullVec(begin,1) = vec(begin,1);
% Umwandlung zurück in Matrix
Die Matrix wird zu Vektor umgewandelt, dann werden die ersten 1en und 2en gefunden und dann wird der resultierende Vektor wieder in eine Matrix umgewandelt.
Genau das ist mein Problem. Ich schreibe gerade meine Diplomarbeit und hab mir ein Thema ausgedacht. Programmieren sollte man eigentlich in R, aber ich darfs auch in Matlab machen, weil ich mich da ETWAS besser auskenne. Aber auch nicht gut. Programmiert habe ich auch schon einiges und alles besteht aus Schleifen. Mein Rechner dampft (-:
Ausserdem stoße ich auch mittlerweile ganz heftog an meine Grenzen. Den Algorithmus, denn ich programmieren will, kann ich wahrscheinlich gar nicht umsetzten
immer wenn du nicht weiterkommst einfach den Code hier reinstellen und
das Forum wird dich schon helfen.
Und nochwas wenn dein Thread beantwortet ist dann auf beanwortet umschalten.
Ich würde ja auch gerne Fragen stellen. Aber ich muss ja erstmal ein Pamphlet verfassen in dem ich erkläre, was ich überhaupt machen will. Das hab ich mich bis jetzt noch nicht getraut. Solle ich aber vielleicht mal machen.
Ja, genau...Schleifen dauern in der Regel lange. Das ist eben der Vorteil von MATLAB dass es Matrizen kennt:)
P.S. Wir brauchen mehr Leute wie Vito hier..dann wirst du glaube ich keine Probleme mit der Diplomarbeit haben....
Einstellungen und Berechtigungen
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.