Matlab - fft 形式 ascii

Matlab - fft form ascii

我想根据保存在文件中的测量值来表示 FFT。 该文件的格式为[频率,振幅],即

0,00;0,15;
3,91;0,34;
7,81;0,60;
11,72;1,66;
15,63;3,66;
19,53;0,98;
23,44;0,60;
27,34;0,44;
31,25;0,35;
35,16;0,29;  
39,06;0,25;
42,97;0,22;
46,88;0,20;

如何绘制这些数据?

从文件中读取此文件时出现的问题是它使用逗号而不是点来分隔小数点。为避免出现任何问题,您可以将文件内容作为文本读取(导致一个字符串变量)并在 MATLAB 中用点替换逗号:

fileContent = fileread('input_file.txt'); 
fileContent = strrep(fileContent ,',','.');

接下来您可以使用sscanf(字符串扫描)函数从字符串中提取浮点值(%f)。使用 [2,inf] 指定您希望输出具有两行和所需数量的列。

A = sscanf(fileContent ,'%f;%f;\n',[2,inf]); 

然后你有一个数组 A,第一行是频率,第二行是相应的值。有了它,您可以创建任何您喜欢的情节,例如

stem(A(1,:),A(2,:));
title('FFT of a signal');
xlabel('Frequency (Hz)');
ylabel('Amplitude');