以表格形式(矩阵形式)在多个点打印FFT 我用C++模拟了多点电压的时域。输出以表格形式打印(即第一列中的时间和下列中每个点的电压)。 我不熟悉Matlab,但使用它对上一个文件进行fft,在该文件中,我需要获得第一列中的频率表,然后是每个点的频域值(在同一个文件中)。 我尝试了所有方法来生成这样的表,但它总是显示在一列矩阵中(即,所有数据都设置在一列矩阵中)

以表格形式(矩阵形式)在多个点打印FFT 我用C++模拟了多点电压的时域。输出以表格形式打印(即第一列中的时间和下列中每个点的电压)。 我不熟悉Matlab,但使用它对上一个文件进行fft,在该文件中,我需要获得第一列中的频率表,然后是每个点的频域值(在同一个文件中)。 我尝试了所有方法来生成这样的表,但它总是显示在一列矩阵中(即,所有数据都设置在一列矩阵中),matlab,matrix,export,fft,transpose,Matlab,Matrix,Export,Fft,Transpose,我需要它的形式是: ╔═══════════════════════════════════════════════╗ ║ *f V1(f) V2(f) ..... Vn(f)* ║ ╠═══════════════════════════════════════════════╣ ║ ║ ║ f1 .. ..

我需要它的形式是:

╔═══════════════════════════════════════════════╗
║     *f     V1(f)     V2(f)    .....    Vn(f)* ║
╠═══════════════════════════════════════════════╣
║                                               ║
║     f1      ..        ..               ..     ║
║                                               ║
║     f2      ..        ..               ..     ║
║                                               ║
║     f3      ..        ..               ..     ║
╚═══════════════════════════════════════════════╝
另外,如果我能创建这样的矩阵,我怎么能得到它的转置(再次将它快速傅里叶变换到空间)

代码如下:

itr=importdata('filename.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
有人能帮我吗?
非常感谢:)

我根据我假设的输入结构更改了您的一些代码
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])
最后一行将在命令窗口中以表格形式显示数据。 请注意,我删除了循环,因为matlab允许矢量化表示法。还添加了
fftshift
,以使频率和振幅正确对齐。 您可以使用
save
fprintf
写入文件,例如,如下所示(您需要更改格式字符串以匹配数据列的数量):


我真的很感谢你快速而有益的回复。我尝试了“disp”命令和“fopen、fprintf、fclose”过程,但仍然得到错误“CAT参数维度不一致”。有什么建议吗?@user2804069我会检查你连接的数组的大小(f和FR)。对于初学者,还应检查itr的大小(见上面第一行),L应为时间步数,N为系列数+1。如果L,N不正确,请将itr转置为
注意,我在上面做了一个小改动,删除了不需要的预分配。
fid=fopen('test.dat','w')
fprintf(fid,'%f %f %f \n',[f ; real(FR)' ; imag(FR)'])
fclose(fid)