2 Stimmen

Druck von FFT an mehreren Punkten in tabellarischer Form (Matrixform)

Ich habe die Spannung im zeitlichen Bereich an mehreren Punkten simuliert, indem ich C++ verwendet habe. Die Ausgabe wird tabellarisch ausgegeben (d.h. Zeit in der ersten Spalte und Spannung an jedem Punkt in den folgenden Spalten).
Ich bin neu bei Matlab, benutze es jedoch, um die vorherige Datei zu fft, in der ich eine Tabelle mit Frequenz in der ersten Spalte und darauf folgende Frequenzbereichswerte für jeden Punkt benötige (in derselben Datei).
Ich habe alle Mittel ausprobiert, um eine solche Tabelle zu erzeugen, aber sie wird immer in einer Spaltenmatrix angezeigt (d.h. alle Daten sind in einer Spaltenmatrix festgelegt).

Ich benötige es in folgender Form:

     *f     V1(f)     V2(f)    .....    Vn(f)* 

     f1      ..        ..               ..     

     f2      ..        ..               ..     

     f3      ..        ..               ..     

Außerdem, falls es mir gelingt, eine solche Matrix zu erstellen, wie kann ich deren Transposition erhalten (um sie noch einmal bezüglich des Raums zu fften)?

Der Code lautet wie folgt:

itr=importdata('dateiname.itr');

L=length(itr);             

T=itr(L,1);                

dt=itr(2,1);   

t=(0:dt:T-dt);

fs=1/dt;

FR_length=L;

[M,N]=size(itr(1:end,1:end));

f=-FR_length/2:FR_length/2-1;

f=f3.*(fs/FR_length);

for n=2:N

   FR=fft(itr(:,n),FR_length);   

end

Kann mir jemand dabei helfen? Vielen Dank :)

0voto

Buck Thorn Punkte 5014

Ich habe einen Teil Ihres Codes geändert, basierend auf der Annahme über die Struktur des Inputs itr:

[L,N]=size(itr);                  
dt=itr(2,1);       
fs=1/dt;        
f=-L/2:L/2-1;    
f=f*(fs/L);    
FR =fftshift(fft(itr(:,2:end)));   
disp([f' FR])

Die letzte Zeile wird Ihre Daten als Tabelle im Befehlsfenster anzeigen. Beachten Sie, dass ich die Schleife entfernt habe, da Matlab vektorisierte Notation erlaubt. Außerdem habe ich fftshift hinzugefügt, um Ihre Frequenzen und Amplituden korrekt anzuordnen. Sie können save oder fprintf verwenden, um in einer Datei zu schreiben, beispielsweise wie folgt (Sie müssen den Format-String ändern, um mit der Anzahl der Datenspalten übereinzustimmen):

fid=fopen('test.dat','w')
fprintf(fid,'%f %f %f \n',[f ; real(FR)' ; imag(FR)'])
fclose(fid)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X