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

Matrix und findpeaks: Matrix aufteilen

 

Elli248

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2016, 15:42     Titel: Matrix und findpeaks: Matrix aufteilen
  Antworten mit Zitat      
Hallo liebe Community,

ich habe da ein kleines Problem und hoffe ihr könnt mir auf die Sprünge helfen.
Mir stehen zwei Datensätze zu Verfügung, ich nenne den einen "stim" den zweiten "spike".
Mit "findpeaks" suche ich mir nun die Maxima aus stim und möchte nach jedem Maximum bis zum nächsten Maximum von stim in der gleichen Länge eine Zeile der Matrix Spike in eine neue Matrix als eine Zeile kopieren.
Das ganze soll dann so aussiehen

stim: |----|----|----|----|---- eine Zeile, hier werden die peaks gesucht
spike |----|----|----|----|---- eine Zeile, und auf diese Länge angewendet

neue Matrix der spikes zum Zeitpunkt des Maximums von stim:
|----
|----
|----
|----
|----

Mein Code lautet bisher wie folgt:

Code:
% Stimulus
stim=data(:,3);
% VEPs
spike=data(:,1);
% halbieren, da erstes Stück der Daten schöner
stim=stim(1:(length(stim))/2);
spike=spike(1:(length(spike))/2);
% komplette Spikes mit Stimulus überlagert plotten
plot(spike);
hold on
plot(stim);
% Finde den Beginn aller Stimuli
[pks,locs]=findpeaks(stim,'MINPEAKDISTANCE', 247, 'MINPEAKHEIGHT', 3);
hold on
% Zeige gefundene stimuli

plot(locs,zeros(length(locs)),'*');
% Für erste 1000 Maxima
for i=1:1:1000;
spikeeinzel(i,:)=spike(locs(i):locs(i+1)); %Hier sitzt wohl der Denkfehler *1
end


*1 Ziel ist es hier aus den "locs" der Maxima von stim von peak 1 zu peak 2, dann von peak 2 zu peak 3 bis peak 999 zu peak 1000 auf das Datenstück von spike zuzugreifen und je ein Datenstück in je eine Zeile zu schreiben.

Ich wäre um jede Hilfe sehr dankbar.
Liebe Grüße,
Elli


Elli248

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2016, 15:59     Titel:
  Antworten mit Zitat      
Ich muss noch was hinzufügen. Das Problem was Matlab damit wohl hat ist, dass die Anzahl der samples leicht um +-3 schwanken nach dem gefundenen Maxima. Kann ich dieses Problem irgendwie umgehen?
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.03.2016, 16:33     Titel:
  Antworten mit Zitat      
wenn die länge der vektoren schwankt können sie nicht einfach in eine matrix gepackt werden da ja die dimmensonen nicht stimmen. du kannst cell arrays verwenden, die ergebniss vektoren auf die selbe länge bringen oder die matrix vorher so groß machen wie sie maximal werden kann und dann werte abschneiten und die fehlenden halt durch etwas ersetz was du willst, je nachdem was du später mit den daten machen willst kann das eine oder das andere praktischer sein.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Elli248

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2016, 16:45     Titel:
  Antworten mit Zitat      
Hi, danke schon mal für die Antwort.
Also die Daten sollen im Anschluss gemittelt werden. Ein lag zwischen den Daten wäre dann sowieso sehr unvorteilhaft.

Das heißt würde man sie mit "nullen" auffüllen wäre das wahrscheinlich der optimalste Fall weil eine andere ordentliche Lösung fällt mir pauschal nicht ein?

Abschneiden würde theoretisch auch gehen. Ich hatte nun folgende Idee:
Ich erstelle eine Matrix mit 1000 Zeilen und 960 Spalten und schneide den Rest bis zum letzten Maximum einfach weg.

Irgendwie scheitert es jedoch an der Umsetzung, denn entweder meckert Matlab mit "...exceeds Matrix dimensions" oder "matrix dimensions must agree".
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.03.2016, 17:17     Titel:
  Antworten mit Zitat      
Zitat:
Irgendwie scheitert es jedoch an der Umsetzung, denn entweder meckert Matlab mit "...exceeds Matrix dimensions" oder "matrix dimensions must agree".

das ist keine sehr ausführliche fehlerbeschreibung. mit "irgendwie scheitert es..." kann man nix anfganen ohne den code dazu
Zitat:
Das heißt würde man sie mit "nullen" auffüllen wäre das wahrscheinlich der optimalste Fall

das verändert den mittelwert. also nan benutzen mit nanmean oder wie ich bereits sagte ein cellarray
_________________

richtig Fragen
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.