2015-10-18 105 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中。