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

Fensterung

 

Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2015, 11:04     Titel:
  Antworten mit Zitat      
Ich hätte noch eine kleine Verständnisfrage. Und zwar warum werden meine Peaks kleiner, wenn ich mein nfft erhöhe mit nfft = 2^nextpow2(nfft);?!
Das wird ja ca. um die hälfte kleiner würde ich jetzt tippen...
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: 30.09.2015, 09:49     Titel:
  Antworten mit Zitat      
Durch Zeropadding (Anhängen von Nullen ans Signalende) muss anders skaliert werden. Das habe ich nicht bedacht. Allerdings kommt es dann im niederfrequenten Bereich zu Darstellungsfehlern, welche ich selbst noch nicht nachvollziehen kann.

Die Funktion mit geänderter Sklaierung ist im Anhang. So stimmen zumindest bis auf den neiderfreq. Bereich die Amplituden.

Du solltest aber mal statt zeropadding eine Interpolation der deiner Daten versuchen, um so die Genauigkeit des Spektrums zu erhöhen. Am besten du nutzt die Funktion resample . Dadurch vergrößert sich aber nicht nur die Anzahl Messwerte, sondern auch die Abtastfrequenz. Also nicht vergessen Fs entsprechend bei der Übergabe an FFT_betragsspektrum zu ändern.

FFT_betragsspektrum.m
 Beschreibung:

Download
 Dateiname:  FFT_betragsspektrum.m
 Dateigröße:  1.32 KB
 Heruntergeladen:  454 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2015, 11:03     Titel:
  Antworten mit Zitat      
Alles klar. Vielen Dank, ich werde das später versuchen und sehen was rauskommt....
Private Nachricht senden Benutzer-Profile anzeigen
 
Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 13:10     Titel:
  Antworten mit Zitat      
Hallo,

Ich habe jetzt nach langer Zeit nochmal versucht meine Daten etwas anders darzustellen, um einfach vielleicht bei der ganzen Menge die Abbildungen zu reduzieren. Leider habe ich immernoch das Problem, dass ich eine Fehlermeldung bekomme. Und zwar folgende bei dem darauffolgenden Befehl:

Subscripted assignment dimension mismatch.

Code:
%% az
clear
load az_6_28
load az_7_28
load az_16_28


Fs = 1000; % Abtastfrequenz in Hz
T = 1/Fs;             % Sampling period
L = 1000;             % Length of signal
t = (0:L-1)*T;        % Time vector

% Testsignals
signal_1 = az_6_28;
signal_2 = az_7_28;
signal_3 = az_16_28;

signal_1=signal_1-sum(signal_1)/length(signal_1);
signal_2=signal_2-sum(signal_2)/length(signal_2);
signal_3=signal_3-sum(signal_3)/length(signal_3);

y(1,:) = signal_1;
y(2,:) = signal_2;
y(3,:) = signal_3;

% preallocate
mag = zeros(L/2+1,3);
mag_dB = mag;
fv = mag;

titel_array = {'Spectrum az 6','Spectrum az 7','Spectrum az 16'}
   
for i=1:3
    nfft = length(y(i,:));% Anzahl Messwerte
    % nächste 2er Potenz
    nfft = 2^nextpow2(nfft);
   
    [mag(i,:), mag_dB(i,:), fv(i,:)] = FFT_betragsspektrum( y(i,:), nfft, Fs, 1, 0) ; % Funktionsaufruf

    figure=gcf;
    plot(fv,mag);
    suptitle('Amplitude spectrum for az, z = 6,0 m, load level 28');
    title(titel_array{i},'Interpreter','none');
    xlabel('Frequency [Hz]', 'Fontsize', 8);ylabel('Amplitude [m/s^2]', 'Fontsize', 8);
    legend('Signal 1','Signal 2','Signal 3');
    xlim([0 20]);
    %ylim([0 0.45]);
    grid on;
    colormap(lines);
   
end
 


Müsste daran liegen, dass ich drei Spaltenvektoren habe und nicht Zeilenvektoren. Habe alles mögliche versucht. Hin und her, kann mir vielleicht jemand einen Tipp geben?! Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 13:55     Titel:
  Antworten mit Zitat      
Ich habe für y = 3 x 17642 Werte
Aber bei meinen Signal 1-3 steht jeweils =17642 x 1
Also ein Zeilenvektor. Liegt es daran? Ich habe schon die ganze Zeit hin und herprobiert mit dem ändern des Codes bei y(1,Smile etc. Aber ich bekomme keine FFT-Spektren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 14:02     Titel:
  Antworten mit Zitat      
Wenn ich jedoch mit meinem vorherigen Skript die Daten plote, aber als subplot der drei verschiedenen Messsensoren, dann kommt auch was bei raus. Ohne dass ich etwas ändere.
Code:
clear all
close all
clc

load az_5_28
load az_8_28
load az_15_28

Fs = 1000; % Abtastfrequenz in Hz
T = 1/Fs;             % Sampling period
L = 1000;             % Length of signal
t = (0:L-1)*T;        % Time vector

% Testsignals
signal_1 = az_5_28;
signal_2 = az_8_28;
signal_3 = az_15_28;

signal_1=signal_1-sum(signal_1)/length(signal_1);
signal_2=signal_2-sum(signal_2)/length(signal_2);
signal_3=signal_3-sum(signal_3)/length(signal_3);

y(1,:) = signal_1;
y(2,:) = signal_2;
y(3,:) = signal_3;

titel_array = {'Spectrum az 5','Spectrum az 8','Spectrum az 15'}

for i=1:3
    nfft = length(y(i,:)); % Anzahl Messwerte
    % nächste 2er Potenz
    nfft = 2^nextpow2(nfft);
   
    [mag, mag_dB, fv] = FFT_betragsspektrum( y(i,:), nfft, Fs, 1, 0) ; % Funktionsaufruf

    figure=gcf;
    subplot(3,1,i)  
    plot(fv,mag,'b');
    suptitle('Amplitude spectrum for az, z = 11,0 m, load level 28');
    title(titel_array{i},'Interpreter','none');
    xlabel('Frequency [Hz]', 'Fontsize', 8);ylabel('Amplitude [m/s^2]', 'Fontsize', 8);
    xlim([0 20]);
    %ylim([0 0.55]);
    grid on;
   
end


Ich sehe jedoch bei der Bearbeitung, dass ich für meine mag, fv und mag_db viel größere Werte bekomme. In dem skript hier bekomme ich 16385 Werte wobei ich bei dem anderen Skript 501 x 3 bekomme. Also in meinem Workspace...
Private Nachricht senden Benutzer-Profile anzeigen
 
Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 14:06     Titel:
  Antworten mit Zitat      
Ich habe nun folgenden Code rausgenommen und bekomme so meine Spektren dargestellt.

Code:
% preallocate
mag = zeros(L/2+1,3);
mag_dB = mag;
fv = mag;
Private Nachricht senden Benutzer-Profile anzeigen
 
Karolinchen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 08.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 14:16     Titel:
  Antworten mit Zitat      
Kann ich denn in dieser Schleife die Farben ändern?
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: 22.10.2015, 22:07     Titel:
  Antworten mit Zitat      
Der Fehler in den Dimensionen muss so korrigiert werden.

Code:

% falsch
mag = zeros(L/2+1,3);
% richtig
mag = zeros(3,L/2+1);
 


Da du aber den Schleifeinhalt ohnehin verändert hast, spielt es keine Rolle.

Die Farben kannst du z.B. so ändern:

Code:

colors ={'b','r','g'};

for i=1:3
    nfft = length(y(i,:)); % Anzahl Messwerte
    % nächste 2er Potenz
    nfft = 2^nextpow2(nfft);
   
    [mag, mag_dB, fv] = FFT_betragsspektrum( y(i,:), nfft, Fs, 1, 0) ; % Funktionsaufruf

    figure=gcf;
    subplot(3,1,i)  
    plot(fv,mag,colors{i});
    suptitle('Amplitude spectrum for az, z = 11,0 m, load level 28');
    title(titel_array{i},'Interpreter','none');
    xlabel('Frequency [Hz]', 'Fontsize', 8);ylabel('Amplitude [m/s^2]', 'Fontsize', 8);
    xlim([0 20]);
    %ylim([0 0.55]);
    grid on;  
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3

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.