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

Vektor erstellen dessen Elemente 1 sind sofern Bed. erfüllt

 

Osterwma
Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 01.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2015, 14:00     Titel: Vektor erstellen dessen Elemente 1 sind sofern Bed. erfüllt
  Antworten mit Zitat      
Hallo Zusammen,

Ich benötige vereinfacht einen Vektor 1x10 double, der immer 1 annimmt sofern das Element ein Vielfaches von 2 oder 3 ist, sonst 0.

Dies würde wie folgt aussehen:

Code:
Element 1   2   3   4   5   6   7   8   9   10
    A = [ 0   1   1   1   0   1   0   1   1   1  ]


Wie würde eine entsprechende Schleife aussehen?

Vielen Dank für eure Hilfe.

Grüße

Martin
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.01.2015, 16:04     Titel:
  Antworten mit Zitat      
Hallo Martin,

Soll es eine Schleife sein?

Was du suchst (Vektor, der für eine Bedingung 1, sonst 0 ist) nennt sich logischer Vektor bzw. logical.

Diese ergeben sich bspw. durch Verwendung logischer Operatoren, die sich auf ganze Matrizen anwenden lassen.
Bsp.:
Code:
Element = [1   2   3   4   5   6   7   8   9   10];
A = Element == 2; % 0     1     0     0     0     0     0     0     0     0
A = Element == 2 | Element == 3; % 0     1     1     0     0     0     0     0     0     0


Mit mod (Modulo) kann man sich den Rest einer Division angeben lassen. Wenn dieser 0 ist, ist der entsprechende Wert ein ganzzahliges Vielfaches des gesuchten Werts.

Code:
Element = [1   2   3   4   5   6   7   8   9   10];
A = mod(Element, 2) == 0 | mod(Element, 3) == 0;


Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Osterwma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 01.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2015, 18:32     Titel:
  Antworten mit Zitat      
Hi Seban,

danke für die schnelle Antwort. Ich merke, gerade das die generelle Vorgehensweise des "Vielfachen" zu einem Problem führt.

Mal zu einem konkreten Beispiel, was ich gerade mache. Ich simuliere Stromverbräuche in einem Haushalt. Dort habe ich beispielsweise eine Lampe, die zu bestimmten Zeiten an sein soll.

Wenn das jeweilige Element 1 ist, geht eine Lampe an.
Jetzt hat der Vektor 1440 Elemente, welches einem Tag in Minuten entspricht.

Der Vektor soll jetzt so aufgebaut sein, dass zu jeder vollen Stunde die Lampe für 5 Minuten angeht.

Folglich müssten die Elemente 0-5, 60-65, 120-125, 180-185 usw. = 1 sein.

Bei dem Vorgehen, mit dem Vielfachen, würde jetzt ja das Problem auftreten, dass wenn ich mod(Element, 61) schreibe, würde ja erst wieder 122 = 1 sein. Da war mein Denkfehler...

Wie könnte man das am besten umsetzten?

Vielen Dank für die Hilfe.

Grüße

Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
AndyAndyAndy
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 22.12.14
Wohnort: Nähe Offenburg
Version: GNU Octave 4.1.0+
     Beitrag Verfasst am: 02.01.2015, 19:01     Titel:
  Antworten mit Zitat      
Osterwma hat Folgendes geschrieben:
Mal zu einem konkreten Beispiel, was ich gerade mache


Oft das Beste...

Osterwma hat Folgendes geschrieben:
Der Vektor soll jetzt so aufgebaut sein, dass zu jeder vollen Stunde die Lampe für 5 Minuten angeht.

Folglich müssten die Elemente 0-5, 60-65, 120-125, 180-185 usw. = 1 sein.


Das geht viel einfacher:
Code:

% Matrix mit Minuten für einen Tag aufbauen (60min, 24h)
a = zeros (60, 24);

% erste 5 min pro h = 1
a (1:5, :) = 1;

% dein vektor
b = a(:);
 
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.