2015-10-18 107 views
-1

我试图将FFT应用于大小为4008x2的数组。数据从excel导入。阵列上的FFT Matlab(示例)

只要按照出现在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。我错过了什么?

+0

“显示为空” - 实际范围是什么?你有没有试图绘制日志缩放? – nkjt

+0

为整个阵列,我收到此消息的每个位置返回 NaN + NaNi 就好像数组是空的并且fft没有工作 – Ignacio

回答

0

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


但如果任何在你输入矩阵的值用NaNanyisnan

>> 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值为NaNfft(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中。