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

Berechnung eines Leistungsdichtespektrum

 

cali
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2015, 13:53     Titel: Berechnung eines Leistungsdichtespektrum
  Antworten mit Zitat      
Hallo alle zusammen,

ich bin mehr oder weniger ein absoluter Neuling was Matlab betrifft. Momentan arbeite ich an einem Projekt für die Uni, bei dem ich Messdaten eines Beschleunigungssensors auswerten soll. Die Auswertung in Matlab läuft eigentlich ganz gut, jedoch scheitere ich daran ein Leistungsdichtespektrum zu erstellen, um die verschiedenen Frequenzen der Messung zu überblicken. Folgendes Programm habe ich von meinem Tutor erhalten, mit dem wohl schon eine Messung durchgeführt wurde.

Code:

iFftsize = 2^9;
iFrameshift  = iFftsize/4;
iReadSamplesFromFile = 2^10;
h_window = hann(iFftsize,'periodic');
fs = 5000;

fid = fopen('B3.mat','r');

data=fread(fid,[4,2^16],'double');

h = figure('Name','Simulation Plot Window');

 [~, F, T, P] = spectrogram(data(2,:), h_window, iFftsize-iFrameshift, iFftsize, fs);
surf(T, F(1:150), 10*log(P(1:150,:)),'edgecolor','none');
set(gca,'clim',[-500 0])
% set(handle_plot_PSD,'YTick',time_vector)
box('off')
axis tight;
view(0, 90);
title('Leistungsdichtespektrum')
xlabel('Zeit in Sekunden');
ylabel('Hz');


Ich habe meine Messdaten in einem Vektor mit knapp 1500000 Werten als B3.mat hinterlegt und diese wollte ich mit fopen() einlesen. Da mit dem Programm in einem anderen Projekt schon Messwerte ausgewertet wurden und ich kein Experte in Matlab bin nun zu meiner Frage: Ist es möglich mit fopen() die Werte meines Vektors aus B3.mat so auszulesen oder muss ich diese erst anders verarbeiten?

Als Fehlermeldung erhalte ich folgendes:

Code:
Error using surf (line 57)
X, Y, Z, and C cannot be complex.

Error in leistungsdichte (line 14)
surf(T, F(1:150), 10*log(P(1:150,:)),'edgecolor','none');


Da ich jedoch nicht drauf komme, wo meine Werte complex seien sollen, war meine Vermutung, dass es schon beim Einlesen scheitert.

Über Hilfe oder Ideen würde ich mich freuen!

Gruß Cali
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: 03.01.2015, 13:58     Titel:
  Antworten mit Zitat      
fopen und vor allem fread ist zum Einlesen von Textfiles nicht aber mat files.

Verwende besser den Befehl

Code:


statt fopen und fread
Private Nachricht senden Benutzer-Profile anzeigen
 
cali
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2015, 18:53     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort! Wie genau bekomme ich meinen Vektor aus der Datei gelesen?


Habs einfach mal so ausprobiert.
Code:

fid = load('B3.mat');
 


Dann erhalte ich jedoch nur das ein 1x1 struct, in dem mein Vektor liegt. Habe auch mal ausprobiert die Werte in eine Textdatei zu übertragen und diese mit fopen und fread zu öffnen und damit scheint das Programm durchzulaufen.

Gruß Cali
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: 03.01.2015, 21:51     Titel:
  Antworten mit Zitat      
Schreib doch einfach mal im Command window

Code:


und schaue nach was dann ins Workspace von matlab geladen wurde. Ein .mat file kann eben ein oder mehrere Variablen enthalten, je nach dem was alles im workspace lag, als B3.mat mittels

Code:


erstellt wurde. Gab es dort einen struct, wird mit load der struct wieder geladen Wink
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.