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

Nach Countdown soll Zeile in Matrix gelöscht werden

 

sarah88
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2016, 18:59     Titel: Nach Countdown soll Zeile in Matrix gelöscht werden
  Antworten mit Zitat      
Hallo,
ich habe eine Frage:

Ich habe eine 10x3 Matrix mit verschiedenen Werten und eine Position einer bestimmten Zeile in dieser Matrix (Zeilennummer).

Ich möchte nun einen Countdown bauen, welcher startet, sobald er ein Startsignal in Form eines einfachen Bits (
Code:
cdstart_ende = 1;
) bekommt.

Sobald der Countdown fertig bzw. gleich 0 ist (
Code:
cdstart_ende = 0;
), so soll die bestimmte Zeile in der Matrix gelöscht bzw. mit der Zeilennummer gleich 0 0 0 gesetzt werden. Bitweise Verundung wäre mit einer Variante möglich.

Mein bisheriger Code sieht folgendermaßen aus, das Problem ist, ich kenne mich absolut nicht mit Matlab und Timern/Countdowns schon gar nicht aus.

Code:
m = [1 1 1; 2 2 2; 3 3 3; 4 4 4; 5 5 5; 6 6 6; 7 7 7; 8 8 8; 9 9 9; 10 10 10]; %Matrix

zero_line = [0 0 0]; %Zeile zum Löschen, wenn Countdown zuende ist

cdstart_ende = 0; %Countdown startet, wenn cdstart_ende = 1 ist.

 


Danke und Grüße,
eure Sarah
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.01.2016, 19:34     Titel:
  Antworten mit Zitat      
hast du denn mal timer in der doc nachgeschlagen oder countdown in der suchmaschiene deiner wahl gesucht ?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sarah88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2016, 00:00     Titel:
  Antworten mit Zitat      
Doch klar, ich bin nur zu blöd.

Code:

function [cdende]=cd( cdstart, zeile)

zeile = zeile;

if cdstart == 1
   
t = timer;
t.StartDelay = 3;
t.TimerFcn = @Timerfunktion;
start (t)

else

end

function Timerfunktion (t,event,arg)

cdende = 1;       %Ende
stop(t);

end


end




Soweit mal ein Anfang. Der Timer läuft also durch, gibt dann den Rückgabewert zurück, dass der Timer zuende ist. Darauffolgend soll eben eine bestimmte Zeile in der Matrix genullt werden.

Code:
m(zeile,:)= [0 0 0];


Ist das soweit korrekt?
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.01.2016, 11:08     Titel:
  Antworten mit Zitat      
ich kenn mich mit timern auch nicht so gut aus. ich hab mal was zusammen gefrickelt
Code:
Daten.Matrix=rand(10,3);
Daten.Zeile=8;
t=timer;
t.UserData=Daten;
t.StartDelay=1;
t.TimerFcn = @timerfunc;
t.ExecutionMode='singleShot';
t.StopFcn=@(t,~) delete(t);
start(t)
 


Code:
function timerfunc( mtimer,~ )
Daten=mtimer.UserData;
Matrix=Daten.Matrix;
Zeile=Daten.Zeile;
Matrix(Zeile,:)=0;
Daten.Matrix=Matrix;
assignin('base','Daten',Daten)
disp('1 sec um. zeile gelöscht')
stop(mtimer)
end


das ist nicht sehr schön und es gibt bestimmt noch bessere lösungen aber e löscht nach dem delay von 1 sec eine entsprechende zeile.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
sarah88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2016, 19:43     Titel:
  Antworten mit Zitat      
Danke für deine Antwort!

Wie kann ich den Timer unterbrechen und resetten?
Etwa innerhalb eine for schleife oÄ.

Gruß

Sarah
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: 21.01.2016, 09:52     Titel:
  Antworten mit Zitat      
Hallo sarah88,

Die Dokumentation von timer erklärt das umfassend. Der "stop" Befehl stoppt den Timer. Du darfst ihn dann allerdings nicht in der StopFcn direkt löschen, ansonsten kannst Du ihn nicht wieder starten.
Wie genau ein "Reset" funktioniert, hängt davon ab, was genau Du damit meinst. Kannst Du das genau definieren?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
sarah88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 13.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 18:17     Titel:
  Antworten mit Zitat      
habe es schon selbst gelöst und umgesetzt, DANKE!
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.