Die Amplitude ist gleich für neg und pos Frequenzen (symmetrisch), die Phase ist negiert für negative Frequenzen (antisymmetrisch). Matlab verwendet nicht die Polarnotation (Amplitude und Phase), sondern Realteil und Imaginärteil (z.B. 4+2i). Hier gilt das selbe: Realteil symmetrisch, Imaginärteil asymmetrisch (auch wenn Realteil ungleich Amplitude und Imaginärteil ungleich Phase). Um das Spektrum zu rekonstruieren, musst du also den vorhandenen Teil für pos Frequenzen kopieren, spiegeln, seinen Imaginärteil negieren und an das ursprünglich vorhandene Spektrum dranhängen. Das ist bloss Gefummel. Die Umechnung Zeitachse-Frequenzachse musst du per Hand machen. Hier ein kleines Beispiel.
n = 100;
t = linspace(0,1,n); %Zeitachse
y = rand(1,n); %ein Rauschsignal
y_ = fft(y); %dessen Spektrum
f = linspace(-1/(2*range(t)),1/(2*range(t)), n+1); %die Frequenzachse - Min und Max sind gegeben durch die höchstmögliche Abtastfrequenz
f = f(2:n+1); %die höchste absolute Frequenz wird wie die Null nur einmal angegeben, ich leg sie mal in den pos Bereich
y_pos = y_(1:n/2+1); %das einseitige positive Spektrum
y_tmp = y_pos(n/2:-1:2); %das positive Spektrum gespiegelt ohne höchste und niedigste Frequenz
y_neg = real(y_tmp) - imag(y_tmp)*i; %Negieren des Imaginärteils
y_rec = [y_pos y_neg]; %Zusammensetzen - in Matlab werden die negativen Frequenzen an die positiven drangehängt
y_-y_rec %Testausgabe: sollten alles Nullen sein, wenn die Spektren identisch sind
figure
subplot(221)
plot(t,y);
xlabel(‚t‘);
ylabel(‚y‘);
title(‚Ausgangssignal‘);
subplot(222)
plot(f(find(f>=0)),abs(y_pos), ‚b‘);
xlim([0 max(f)]);
xlabel(‚f‘);
ylabel(‚Amplitude‘);
title(‚Original positives Spektrum‘);
subplot(223)
plot(t,ifft(y_rec));
xlabel(‚t‘);
ylabel(‚y‘);
title(‚Rekonstruiertes Signal‘);
subplot(224)
plot(f,abs(y_rec([n/2+2:n 1:n/2+1])));
xlabel(‚f‘);
ylabel(‚Amplitude‘);
title(‚Rekonstruiertes Spektrum‘);
Kann man bestimmt auch eleganter machen. Hoffe das hilft trotzdem erstmal weiter,
beste Grüsse
Florian