Würden hier nicht ein Paar Schleifen und if-Abfragen genügen? Oder was ist die Frage?
muscarin
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 02.04.2010, 20:04
Titel:
würden? bin über jeden konkreten vorschlag/hilfe/tip dankbar..
ich weiss nicht wie ich es anstellen soll, dass zwischen der ersten und der zweiten 1 in der Spalte mind. a*Nullen, höchstens aber b* Nullen liegen müssen, bzw. dann natürlich weiter, dass zwischen der zweiten und dritten 1 genau mind. c*Nullen, höchstens aber d* Nullen liegen sollen..
Eine vielleicht nicht elegante, aber einfache Lösung wäre das:
B ist deine Matrix, ERG dein Ergebnisvektor. ERG beinhaltet dann die Anzahl der Nullen zwischen den Einsen. Alternativ kann man bei der korrekten Anzahl auch direkt irgendwo null und eins reinschreiben, wäre mir eine weitere if-Anweisung mit countZero, das solltest Du ja selbst hinkriegen.
Code:
countZero = 0;
ERG = [];
for i = 1:numel(B(1,:)) if B(1,i) == 1
ERG = [ERG countZero];
countZero = 0;
else
countZero = countZero + 1;
end end
Falls es doch solche Situationen existieren wo keine Null zw. Einsen vorhandne ist ,
dann benutze diese Version:
Code:
A = [100101000101;
101010001001;
100100101001;
110000101001;
100000101011;
100000011011;
100000001111];
zeros_num = arrayfun(@(x){... unique([findstr(A(x,:),[01]),findstr(A(x,:),[11])]) - ... unique([findstr(A(x,:),[10]),findstr(A(x,:),[11])])}, 1:size(A,1));
zeros_num = vertcat(zeros_num{:})
%
% dann muss du bloß vergleichen, für alle regeln % a)
a = all(zeros_num(:,1:2:end)>=20 & zeros_num(:,1:2:end)<=50, 2);
% b)
b = all(zeros_num(:,2:2:end)>=30 & zeros_num(:,2:2:end)<=60, 2);
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.