Super mit der letzten Zeile hat es schon mal funktioniert, aber eben nur einmal. Ich habe dann nichts mehr geändert und jetzt hat er mit X und Y Probleme. Matlab schreibt raus das Integer dort benötigt werden. Für X und Y steht aber ein Vektor mit <73x1 double> da. Müsste das nicht eigentlich passen?
[code]% Das ist mein Programm
Den obersten Teil habte ich weggelassen, da nicht interessant!
%Fourierzerlegung mit der FFT-Funktion
fa = 144; %Abtastfrequenz = 1 / Abtastperiode = 1 / (t(2)-t(1)) (Beispiel)
N1 = length(ax);
Fft_Analyse1 = fft(ax, N1)/N1;
X = 2*abs(Fft_Analyse1(1:N1/2+1));
N2 = length(ay);
Fft_Analyse2 = fft(ay, N2)/N2;
Y = 2*abs(Fft_Analyse2(1:N2/2+1));
fig = figure(fig + 1);
Ordnungen1 = 0:0.5:(size(X,1))/2-0.5;
subplot(2,1,1);
plot(Ordnungen1, X, 'rx', 'LineWidth', 2.0)
title('Anregungsordnungen')
xlabel('Ordnung')
ylabel('Amplitude')
axis([0 10 0 (max(X)+50)]) %in die Grafik reinzoomen, so dass nur die ersten 10 Ordnungen dargestellt werden
Ordnungen2 = 0:0.5:(size(Y,1))/2-0.5;
subplot(2,1,2);
plot(Ordnungen2, Y, 'rx', 'LineWidth', 2.0)
%title('Anregungsordnungen')
xlabel('Ordnung')
ylabel('Amplitude')
axis([0 10 0 (max(Y)+50)]) %in die Grafik reinzoomen, so dass nur die ersten 10 Ordnungen dargestellt werden
%Amplitudenwerte von ax finden
Schwellwert = 0.10; %Schwellwert von 10%
MaxValueX = max(X); %maximale Amplitude im Spektrum suchen
SchwellwertX = Schwellwert * MaxValueX; %Schwellwert berechnen
% Maskierung der Werte mit Schwellwert -> nur noch Werte über dem Schwellwert vorhanden
maskeX = (X > SchwellwertX);
X_mask = maske.* X;
% Zusammenfassen von Frequenz (Ordnungen) und Amplitude in einem Vektor
X_result(:,1) = X_mask; %Amplituden in Spalte 1 speichern
X_result(:,2) = Ordnungen1; %Ordnugnen in Spalte 2 speichern eventuell ist hier noch eine Transponierung der Matrix nötig. Also X_result(:,2) = Ordnungen';
X_result(X_result(:,1)==0,:)=[];
%Amplit ...
↧