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

Werte aus Vektor mit gleicher Differenz auslesen

 

Kristina
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 17:57     Titel: Werte aus Vektor mit gleicher Differenz auslesen
  Antworten mit Zitat      
Hallo zusammen!

Ich möchte aus einem Vektor alle Zahlen auslesen, die eine Differenz von z.B. 5 besitzen.
Das heißt, ich will am Ende einen neuen Vektor haben, der von den ursprünglichen Zahlen z.B. 1-400, nur noch die Zahlen 1,5,10,15.... enthält. Da die Einträge des Vektors nicht immer mit den Werten dieser Einträge übereinstimmen, weil einige Zahlen zwischen 1 und 400 fehlen, kann ich nicht auf die Einträge zugreifen sondern muss auf die Werte in den Einträgen zugreifen können.

Hat jemand eine Idee wie das funktionieren könnte?

Vielen Dank schon mal im Voraus!

Kristina
Private Nachricht senden Benutzer-Profile anzeigen


Sebastian
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 20:40     Titel:
  Antworten mit Zitat      
Nabend Kristina,

meinst du so?

Code:
% Beispiel für das Finden aller ZAHLENPAARE, die eine Differenz von 5
% aufweisen

% Dein Vektor
v=[1 6 5 8 45 46 6 33 21 678 50 235 789 90 95];


k=1;
for i=1:length(v)
    for j=1:length(v)
        % Bedingung prüfen
            if  v(j)-v(i)==5
                % Wenn erfüllt, schreibe in die 2 x [X]-Matrix
                w(1, k)=i;
                w(2, k)=j;
                k=k+1;
            end
    end
end
 


Geht sicher eleganter, mir ist auf die Schnelle aber auch nichts Besseres eingefallen.

Grüße
_________________

Insanity means doing the same things over and over again and expecting a different result.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kristina
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 21:06     Titel:
  Antworten mit Zitat      
Leider funktioniert das nicht.
Mein Vektor sieht in etwa so aus

v=[1 2 4 5 6 7 9 10 11 12 13 14 16 18 19 21 ... 400]

nun möchte ich alle Zahlen ,in 5er-Schritten, in einem neuen Vektor v_neu abspeichern. In dem Fall wäre das v_neu = [1 6 11 16 21....].

Kristina
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastian
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 21:33     Titel:
  Antworten mit Zitat      
Moin,

zu schnell gelesen, sorry Rolling Eyes

Also falls Du nur jeden fünten Vektoreintrag haben willst, so musst Du Deinen Vektor Downsamplen:

Code:
v_neu=downsample(v, 5)


So?


Grüße
_________________

Insanity means doing the same things over and over again and expecting a different result.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kristina
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 22:06     Titel:
  Antworten mit Zitat      
Stimmt, war etwas unglücklich ausgedrückt.

Jedoch will ich auch nicht jeden 5ten Eintrag aus dem Vektor haben, sondern die Werte, die sich vom letzten Eintrag um 5 erhöht haben. Es sollen also, beginnend mit dem ersten Eintrag, alle Werte mit dem Abstand 5, aus dem Vektor ausgelesen werden und in einem neuen Vektor abgespeichert werden. Das entspricht dann nicht jedem 5ten Eintrag, da manche Zahlen in der Reihenfolge fehlen.

Vielleicht versteht man das so besser.

Trotzdem Danke!

Kristina
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastian
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 09.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2015, 22:14     Titel:
  Antworten mit Zitat      
Oje ...

Also Du willst alle Einträge in Deinem Vektor finden, welche zum vorherigen Eintrag die Differenz 5 aufweisen?

Das macht folgender Code:

Code:
clear all
clc

% Beispiel für das Finden aller Vektoreinträge, die eine Differenz von 5
% zum Vektoreintrag davor aufweisen

% Dein Vektor
v=[1 6 5 8 45 46 6 33 21 678 50 235 789 90 95];


k=1;
for i=1:length(v)-1
    % Bedingung prüfen
    if  v(i+1)-v(i)==5
        % Wenn erfüllt, schreibe in die 2 x [X]-Matrix
        w(k)=v(i+1);
        k=k+1;
    end
end
 


Korrekt?
_________________

Insanity means doing the same things over and over again and expecting a different result.
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: 10.01.2015, 02:47     Titel:
  Antworten mit Zitat      
Hallo Kristina,

Ich versteh es auch noch nicht so ganz. Ausgehend vom ersten Wert im Vektor sollen alle Werte gefunden werden, die x*5 größer (und kleiner?) als dieser sind? Das ginge bspw. so:
Code:
v   = [22:100, 12];
hlp = mod(v(1), 5);
log = mod(v, 5) == hlp;
n   = v(log);


Grüße,
Seban
_________________

Richtig fragen
Debugging
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.