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 bereichsweise untersuchen

 

jenny2103

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 15:21     Titel:
  Antworten mit Zitat      
doch nochmal ich. Ich habe das jetzt mit min gemacht und kriege den selben x-wert bei min und max. das kann ja nicht sein, oder? es ist auch nur einer, soweit ich das sehe.

Es ist doch richtig, dass ich denselben Code auch für min nehmen kann, also:

m=1
for i=1:10:(length(x)-mod(length(x),10))
[wert(m),index(m)]= min(x(i:i+9));
index(m) = index(m) + i - 1;
m = m + 1;
end


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.08.2011, 15:36     Titel:
  Antworten mit Zitat      
Wenn du die max und min nacheinander suchst, wirst du so wert und index überschreiben. Du musst die Ergebnisvektoren also unterschiedlich benennen...

[wert_min, index_min]
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: 16.08.2011, 18:13     Titel:
  Antworten mit Zitat      
Hallo jenny2103,

Die Lösung von zuBesuch ist sehr effizient:
Code:

a = rand(100000,1); %Beispiel Vektor
b = reshape(a,[],10);
[~,index_max]=max(b,[],2);
[~,index_min]=min(b,[],2);
 


Zitat:
Das funktioniert nicht. Habe es versucht. Bekomme aber in z.b. index_max Zahlen die sich wiederholen. Das kann ja nicht sein.

Die Werte von index_max wiederholen sich, weil sie den Index innerhalb jedes 1x10 Subvectors sind. Um den Index bezüglich des gesamten Vektors zu finden:
Code:
index_max_global = index_max + 0:10:length(a);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
zuBesuch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 09:29     Titel:
  Antworten mit Zitat      
... und leider so auch komplett falsch Confused

Das reshape ging über die falsche Dimension,
Es hat 10 Spalten gebildet und in der 1. Spalte standen so der 1. bis zum length(a)/10-te Wert.
Dadurch wird der Rest auch falsch :

Hier die Korrektur:

Code:

a=rand(200,1);
b=reshape(a,10,[]);
[~,index_max]=max(b,[],1);
[~,index_min]=min(b,[],1);
 

So sollte es richtig sein, denke ich...



Ich glaube der globale index funktioniert so auch nicht

Code:

index_max_global = index_max + 0:10:length(a);
% index_max + 0:10:length(a);
% berechnet das gleich wie :
% index_max:10:length(a);
% und das ist wiederrum das gleiche wie:
% index_max(1):10:length(a)

% richtig wäre so etwas:

index_max_global = index_max +(0:10:length(a)-10);
% -10, damit zum letzten index_max nur length(a)-10 addiert wird,
% Länge 100 ->  global_index_max(end)=index_max+90;

 


Und zum Schluss noch ein lauffähiger Code für Vektorlängen die nicht durch 10 teilbar sind:

Code:

a=rand(205,1); %Beispiel Vektor
if mod(size(a,1),10)>0 % auf reshape Größe bringen
    a=[a;nan(mod(size(a,1),10),1)];
end
b=reshape(a,10,[]);
[~,index_max]=max(b,[],1);
[~,index_min]=min(b,[],1);
index_max_global=(0:10:size(a,1)-1)+index_max;
index_min_global=(0:10:size(a,1)-1)+index_min;

 
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.