关于数组的FFT Matlab(示例)

时间:2015-10-18 15:02:24

标签: arrays excel matlab fft nan

我正在尝试将FFT应用于4008x2大小的数组。数据从excel导入。

按照Mathworks中显示的示例,他们会说如果我有一个数组(矩阵),那么fft(X)会将X的列视为向量,并返回每列的傅里叶变换

我这样做如下

format long 
filename='Dean_Ignacio2.xls';
sheet=1;
xlRange='A9:B4008';

subsetA=xlsread(filename,sheet,xlRange);
f=fft(subsetA);

plot(f)

但FFT中的每个元素都显示为NaN + NaNi。我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果将fft应用于MATLAB中包含任何NaN值的变量,则fft输出中的每个值都将包含NaN + NaNiNaN代表非数字,并且最有可能发生,因为您从excel文件导入的某些数据不是MATLAB可以解释的有效数字数据。它可以像在excel文件中将数据格式化为test一样简单。

您可以使用anyisnan

检查输入矩阵中的任何值是NaN
>> A = zeros(4008, 2);
>> A(randi(numel(A), 10)) = NaN; % Make 10 random values NaN
>> any(isnan(A))
ans =

     1     1

如果any(isnan(A))返回1,则输入数据中至少有1个值为NaN,而fft(A)将为每个元素返回NaN + NaNi

MATLAB中的xlsread函数可以使用多个输出参数从正在读取的excel文件返回numeric data, text data or the raw data。我建议你用

>> [num, txt, raw] = xlsread(filename, sheet, xlRange);

从excel文件中读取数据。然后,您可以检查输出以确定MATLAB正在为每种类型读取的内容。数字数据位于num中(与问题中的subsetA相同),文本数据位于txt,原始数据位于raw。< / p>