Forum: Digitale Signalverarbeitung / DSP / Machine Learning Grundwelle mit Mablab berechnen


von Jens M. (jens_mayer)



Lesenswert?

Hallo an Alle

Ich habe ein Problem um bitte deswegen um eure Hilfe.

Ich habe mir mit Ansys-Maxwell die Luftspaltflussdichte eines 
Synchronmotors plotten lassen und will mit Matlab die Grundwelle 
berechnen und zusammen mit dem originalen Signal plotten lassen. Dafür 
habe ich den folgende Code geschrieben:


fs=1000;
T=1/fs;
m = length(B);
d = (0:m-1)*T*2;

n = 2^nextpow2(m);
y = (fft(B,n))/m;
f = (0:n-1)*(fs/n);
   figure(1)

plot(f,abs(y))
xlabel('Frequency (Hz)')
ylabel('Power')
title('{\bf Amplitude_U1}')
y0 = fftshift(y);
f0 = (-n/2:n/2-1)*(fs/n);

power0 = y0.*conj(y0)/m;
figure (2)
plot(f0,abs(y0))
xlabel('Frequency (Hz)')
ylabel('Power')
title('{\bf Amplitude_U1_zentriert}')
phase = unwrap(angle(y0));
figure(3)

plot(f0,phase*180/pi)
xlabel('Frequency (Hz)')
ylabel('Phase_U1 (Degrees)')
grid on

for e=1:1:length(B)
    ulgs(e) =B(e)*exp(-i*(2*pi*(e/length(B))));

end;

    Betrag=2*abs(ulgs(1));
    phi=2*angle(ulgs(1));


gs =Betrag.*cos(2*pi*33*d+phi);
figure (4)
plot(d,B)
hold on
plot(d,gs,'r')

Leider entsprechen die aufgrung des oben stehenden Codes nicht was ich 
als Ergebnis erwarte (Als Anhang die entsprechend Ergebnisse 
(Spectrum,Phase und Grundwelle)).


Ich würde mich freuen, wenn ihr mir weiter helfen könnte

PS: Ich habe zuvor nie mit Matlab programmiert.

mfg

: Verschoben durch Moderator
von M.A. S. (mse2)


Lesenswert?

Jens M. schrieb:
> Leider entsprechen die aufgrung des oben stehenden Codes nicht was ich
> als Ergebnis erwarte (Als Anhang die entsprechend Ergebnisse
> (Spectrum,Phase und Grundwelle)).
1. Frage: was heißt 'aufgrung'?
2. Frage: was hast Du denn erwartet?

von Walter T. (nicolas)


Lesenswert?

Jens M. schrieb:
> Leider entsprechen die aufgrung des oben stehenden Codes nicht was ich
> als Ergebnis erwarte (Als Anhang die entsprechend Ergebnisse
> (Spectrum,Phase und Grundwelle)).

Jo.

Sinnvoller:

Sinus-Ansatz mit drei Parametern (Frequenz, Amplitude, Phasenlage) und 
dann eine Fehlerquadratmethode auf sämtliche Funktionswerte ansetzen.

Kein FFT nötig. Nur ein nichtlineares Gleichungssystem.

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Zoom doch mal in der fft ordentlich rein, so dass man was brauchbares 
auf der Frequenz- Achse sehen kann.

von Detlef _. (detlef_a)


Lesenswert?

Hallo Jens,

stell mal die berechneten Flussdichten als File hier ein, ich schau mal 
ob ich die Grundwelle finde.

>>> Nur ein nichtlineares Gleichungssystem.

Nein, das ist ein lineares Gleichungssystem:

Beitrag "Frequenz, Amplitude und Phase eines Sinussignals bestimmen"

Cheers
Detlef

von Walter T. (nicolas)


Lesenswert?

Das ist elegant - Prony's method kannt ich noch nicht.

Aber zur Ehrenrettung des alten Gauß: Der funktioniert auch bei 
nicht-äquidistanten Stützstellen.

von Flussdichte (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Detlef


als Anhang die Excell-Datei mit den berechneten Werte der 
Luftspaltflussdichte.

Danke Voraus

mfg
Jens

von Detlef _. (detlef_a)


Angehängte Dateien:

Lesenswert?

Hi,

so sehen die Daten aus, die Du geschickt hast. Da kann ich keinen Sinus 
entdecken und auch keine Ähnlichkeit zu Deinen Bildern oben. Oder ich 
hab was nich verstanden.

Cheers
Detlef

von Flussdichte (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Detlef

wenn ich die Daten, die ich dir geschickt habe, in Matlab importieren 
und plotte, dann bekomme ich ein Sinusformiger Verlauf der 
Luptspaltflussdichte (Sehe Bild Flussdichte).

Die erste Spalte ist der Luftspaltumfang (die ich immer als d unbenne) 
und die zweite ist die Flussdichte (die ich immer als B unbenne)und dann 
den Befehl plot(d,B)angebe. Als Ergebnis bekomme ich das Bild, das ich 
als Flussdichte in Anhang getauft habe.

Könntest du vielleicht hier dein Code hochladen?, dann würde ich damit 
versuchen, die Grundwelle rauszuziehen.

Ich bedanke mich für dein Hilfe und wünsche dir frohe Weihnahten

mfg Jens

von Detlef _. (detlef_a)


Angehängte Dateien:

Lesenswert?

Hi Jens,

sorry, hatte mich vorgestern wohl verhauen ?!
Fitting klappt gut mit dem Programm aus dem obenerwähnten thread:

Beitrag "Frequenz, Amplitude und Phase eines Sinussignals bestimmen"

Cheers
Detlef

: Bearbeitet durch User
von Jens (Gast)


Lesenswert?

Hi und frohes neues Jahr Detlef

ja, das ist die Grundwelle.

Ich werde mir dein Matlab-skript kopieren und selber probieren und dir 
bescheid geben.

Ich bedanke mich für deine Hilfe und entschuldige mich für die spaätere 
Antwort, bin erst heute wieder zurück zu Uni.

mfg
Jens

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.