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

Zahlenreihe

 

sitom
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 12.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 16:34     Titel: Zahlenreihe
  Antworten mit Zitat      
Hallo,

ich bearbeite für meine BA Messdaten und brauche einen Befehl, der mir aus einer Matrix mind. 10 hintereinander folgende Zahlen ausgibt.
Matrix A =67760
67761
67767
67768
67769
108345
108346
108347
108348
433886
433887
433888
433889
433890
433891
433892
433893
433894
433895
433896
433897
433898
433899
433900
433901
433902
433903
433904
433905
433908
433909
433910
433911
433912
433913
433920
433921
433922
433931
1728836
1728837
1728838

D.h. die Zahlen 433886 bis433913
Kann mir da jemand sagen,wie ich das am besten programmiere?
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: 12.03.2012, 16:40     Titel:
  Antworten mit Zitat      
versteh ich nicht. kannst du dein problem mitte genauer beschreiben? anhand welches kriteriums sollen die zahlen ausgegeben werden ?
und verwende bitte die code umgebung.
Private Nachricht senden Benutzer-Profile anzeigen
 
sitom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 12.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 16:51     Titel:
  Antworten mit Zitat      
Matrix A ist eine Beispielmatrix

Code:

Matrix A =
67760
67761
67767
67768
67769
108345
108346
108347
108348
433886
433887
433888
433889
433890
433891
433892
433893
433894
433895
433896
433897
433898
433899
433900
433901
433902
433903
433904
433905
433908
433909
433910
433911
433912
433913
433920
433921
433922
433931
1728836
1728837
1728838


Nun möchte ich mind. 10 aufeinanderfolgende Zahlen von dieser Matrix A ausgeben lassen.
D.h. als Ergebnis möchte ich die Zahlen 433886 bis 433913.
Es geht um eine Dynacmische Anwendung,wo sich die Matrix immer ändert, ich aber immer den Bereich brauche, wo die meisten zusammenhängenden Zahlen sind.
mein problem nun verstanden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 19:18     Titel:
  Antworten mit Zitat      
Hallo,
das sieht jetzt vielleicht verwirrend aus, aber es sollte funktionieren:

Code:

dA=diff(A);
ind0=find(dA~=1);
ind0=[0;ind0;length(ind0)];
ind1=diff(ind0);
ind2=find(ind1>=10);
von=ind1(ind2)+1;
bis=ind1(ind2+1);
%A(von(i):bis(i)) sind die Werte die die Bdingung erfüllen
 


GRuß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
sitom
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 12.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 23:11     Titel:
  Antworten mit Zitat      
Hallo Kevin,
danke für den Versuch, aber irgendwie klappt das nicht so richtig!
Wenn du nochmal einen Quelltext schreibst,kommentier ihn bitte,dass ich weiß,was jede Zeile genau macht,konnte ich bei dir nicht richtig nachvoll ziehen. Ich habe mal eine Matrix genommen,die ich bearbeiten muss:
Code:

A=
      243452
      243453
      243454
      243455
      243456
      243457
      446375
     2097084
     2894556
     2894557
     2894558
     2894559
     2894560
     2894561
     2894562
     2894563
     2894564
     2894565
     2894566
     2894567
     2894568
     2894569
     2894570
     2894571
     2894572
     2894573
     2894574
     2894576
     2894577
     2894578
     2894579
     2894580
     2894581
     2894582
     2894588
     2894589
     2894590
     2894591
     2894599
     2894600
     2894670

 


Mit deinem Code kommt da:
von = 20
bis = 7
was ja offensichtlich nicht richtig ist.

Ich habe mal was geschrieben, aber damit bekomme ich nur die Stelle und die Länge
Code:
la = length(a);

vgl = [0;0];
for i = 1:la-1
    b = 1; j = i;
    while a(i+1) == a(i)+1
        i = i+1; b = b+1;
        if i+1 > la
            break;
        end
    end
    if vgl(2,1) < b
        vgl = [j;b]
    end
end
 

Ergebnis:
vgl =
1
6

vgl =
9
19

Ich bekomme nicht hin, dass er mir die gewünschten Anzeigt und in eine neue Matrix schreibt, könnt ihr mir helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 14.03.2012, 00:12     Titel:
  Antworten mit Zitat      
Der Code von Kevin ist bis auf einen kleinen Fehler schon richtig...

Code:

dA=diff(A);
ind0=find(dA~=1);
ind1=diff(ind0);
ind2=find(ind1>=10);
von=ind0(ind2)+1; % auf ind0 und nicht ind1 zugreifen
bis=ind0(ind2+1); %  ebenfalls ind0
% A(von(i):bis(i)) sind die Werte die die Bedingung erfüllen
% Ausgabe des Ergebnis in Matrix fehlt noch
% Auf Grund möglicher unterschiedlicher Länge der Reihen, besser mit cell arbeiten

% Edit: Mögliche Ausgabe
for i=1:length(von)
    B(i) = {A(von(i):bis(i))};
end
 
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.