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

bestimmte werte aus vektor

 

stevorino
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 11:32     Titel: bestimmte werte aus vektor
  Antworten mit Zitat      
Hallo,

Ich hätte eine Frage:

Ich habe einen Vektor (64800,1)

Aus diesem möchte ich aber nur bestimmte Werte rauskopieren:

1. Abschnitt 29791:29800

2. Abschnitt 29971:29980 ...... weitere 52 Abschnitte ...

55. Abschnitt 39511:39520

also insgesamt 55 Abschnitte:

zwischen den Anfangswerten ist immer ein 180er Schritt

Danke schon mal,
Stno
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: 28.03.2012, 11:41     Titel:
  Antworten mit Zitat      
Code:
k=1;
c=cell(55,1)
for l=29791:180:39511
c{k}=V(l:l+9)
k=k+1;
end
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 12:32     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort,

werde ich gleich mal ausprobieren.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 13:06     Titel:
  Antworten mit Zitat      
ja, das funktioniert.

allerdings hätte ich die Werte statt in einer Zelle gerne untereinander stehen in einem Vektor (550,1), weil ich dann den Mittelwert bilden muss

und das ganze für 96 Spalten (550,96)

Viele Grüße
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: 28.03.2012, 13:08     Titel:
  Antworten mit Zitat      
dann einfach anstat einer cell für c eine matrix verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 13:51     Titel:
  Antworten mit Zitat      
ok,

cell2mat ist auch gut, aber wie mache ich den Prozess für 96 Spalten?

MATLAB nimmt automatisch immer nur die erste Spalte.
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: 28.03.2012, 14:02     Titel:
  Antworten mit Zitat      
was du mit den 96 spalten meinst weis ich nicht. wenn du einen vektor nach dem cell2mat haben willst kannst du das mit reshape lösen
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 14:12     Titel:
  Antworten mit Zitat      
sorry ich hab mich am anfang falsch ausgedrückt...
da habe ich erwähnt, dass ich einen Vektor (64800,1) habe.
Eigentlich habe ich aber ein array (64800,96)

und wenn ich deinen code anwende, nimmt matlab immer nur die 1.spalte

ich hätte aber gerne, dass es für alle spalten macht:

Code:
k=1;
c=cell(55,1);
for l=29791:180:39511
c{k}=NO((l:l+9));
k=k+1;
end

M=cell2mat(c);
N=mean(M(~isnan(M)));


NO ist in dem fall das array

im endeffekt haätte ich gerne als output einen vektor (96,1) mit den mittelwerten der einzelnen 96 spalten ... und da hänge ich gerade

ich hoffe, es ist jetzt verständlich
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: 28.03.2012, 14:24     Titel:
  Antworten mit Zitat      
Code:
clear
NO=repmat((1:64800)',1,96);
k=1;
c=nan(550,96);
for l=29791:180:39511
c(10*k-9:10*k,:)=NO((l:l+9),:);
k=k+1;
end
b=mean(c);
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 15:30     Titel:
  Antworten mit Zitat      
ich verstehe repmat nicht ... das gibt mir ein array mit 96 Spalten die alle die gleichen Werte enthalten.

Eigentlich habe ich ja schon ein array mit werten.
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: 28.03.2012, 15:43     Titel:
  Antworten mit Zitat      
das ist auch nur ein platzhaltern damit mein beispiel läuft -.- ich hab ja deine originalmatrix nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
stevorino
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 06.12.11
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 28.03.2012, 16:00     Titel:
  Antworten mit Zitat      
ok ... stimmt.

ich glaube eine letzte frage muss ich noch stellen, auch wenn es sicher schon nervt.

wenn ich folgenden code verwende, dann bekomme ich nur einen Mittelwert, möchte aber 96

Code:
k=1;
c=nan(550,96);
for l=29791:180:39511
c(10*k-9:10*k,:)=NO((l:l+9),:);
k=k+1;
end

N=mean(c(~isnan(c)));


wenn ich deinen code von oben, ohne repmat, verwende, bekomme ich zwar meine 96 werte, allerdings sind alle NaN weil in meinem array ja NaNs enthalten sind ...
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.