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

In for-Schleife meine Werte in leeren Vektor einfügen?

 

caca63

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2016, 11:49     Titel: In for-Schleife meine Werte in leeren Vektor einfügen?
  Antworten mit Zitat      
Hi Leute,

Code:
%erstelle einen leeren Vektor, in den die Peak Werte gespeichert werden
peak_vec = [];

%dann iteriere ich über die Spalten meiner Messmatrix, um die Peaks %auszurechnen und meine Kurve zu filtern und plotten.
for i=1:1:16
    current_spectra = cooling_spectra(:, i);
   
%filter die Spekten im kühlprozess und plotte die gefilterten Spektren
    filt_spectra = filtfilt(w,1,current_spectra);
    diff = 1569.603-1519.707;
    x = 1519.802:diff/512:1569.603;
    plot(x,filt_spectra);
    hold on;
%findet alle Peaks, aber mit Pixelangabe
    [peakValues, peakLocations] = findpeaks(filt_spectra);
%speichere alle Peaks in einen Vektor
    peak_vec = [empty peakLocations];
end
    hold off;
 


Wie füge ich in dieser for-Schleife meine gefilterten Peaks in den leeren Vektor, peak_vec, ein?

Vielen Dank im Voraus! <3


huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 01.09.2016, 11:59     Titel:
  Antworten mit Zitat      
probiere bitte mal
Code:
%speichere alle Peaks in einen Vektor
    peak_vec = [peak_vec peakLocations];
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2016, 12:07     Titel:
  Antworten mit Zitat      
... oder
Code:
peak_vec = [peak_vec; peakLocations];

je nachdem ob die peakLocations Zeilen- oder Spaltenvektoren sind.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
caca63

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2016, 12:31     Titel:
  Antworten mit Zitat      
Hi,

gibt es eine andere Funktion als findpeaks, um lokale Maxima zu finden? findpeaks speichert auch Peaks vom Rauschen..

Danke für die Antwort, bin auf jeden Fall einen Schritt näher an der richtigen Lösung. Jedoch sind die Dimensionen von peakLocations und peak_vec nicht miteinander kombinierbar. Daher suche ich noch nach einer anderen Lösung.

LG
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2016, 13:11     Titel:
  Antworten mit Zitat      
Hallo,

mir ist keine andere Funktion als findpeaks bekannt. Du müsstest dann wohl an den Einstellungen des Funktionsaufrufs basteln.

Hast du beide Vorschläge versucht?
Ich würde an sich davon ausgehen, dass peakLocations immer Zeilen- oder Spaltenvektoren sind. Dann müsste eines von beiden gehen.
Falls nicht, wäre ein konkretes Beispiel hilfreich.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
caca63

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2016, 15:32     Titel:
  Antworten mit Zitat      
Code:
peak_matrix = [peak_matrix peakLoc];
funktioniert leider nicht, da peak_matrix leer ist peak_matrix = [] und peakLoc ein zweidim. Vektor ist..

Danke für Eure Antwort!

LG,
caca63
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2016, 18:34     Titel:
  Antworten mit Zitat      
Hallo,

ein Vektor ist immer eindimensional.
Meinst du eine Matrix, vielleicht mit 2 Spalten?

Auch das ginge:
Code:
peak_matrix = [];
peakLoc = rand(3,2);
peak_matrix = [peak_matrix; peakLoc];
peakLoc = rand(3,2);
peak_matrix = [peak_matrix; peakLoc]


Wenn das nicht funktioniert, dann kann man dir wohl nur helfen, wenn du ein reproduzierbares Beispiel zur Verfügung stellst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
caca63

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2016, 14:32     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort. Habe das Problem nun gelöst. Deine Antwort hat gestimmt, jedoch lag mein Fehler in dem vorigen Schritt. Meine Werte wurden nicht korrekt eingespeichert in der peak_matrix, sodass sie andere Dimensionen hatte.

LG
 
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 - 2024 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.