簡體   English   中英

陣列上的 FFT Matlab(示例)

[英]FFT Matlab on array (Example)

我正在嘗試將 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 我錯過了什么?

如果您將fft應用於 MATLAB 中包含任何NaN值的變量,則fft輸出中的每個值都將包含NaN + NaNi NaN代表Not a Number並且很可能發生,因為您從 excel 文件導入的某些數據不是 MATLAB 可以解釋的有效數值數據。 它可以像將數據格式化為 excel 文件中的 test 一樣簡單。


您可以使用anyisnan檢查輸入矩陣中的any值是否為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 文件中返回 數值數據、文本數據或原始數據 我建議你使用

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

從您的 excel 文件中讀取數據。 然后,您可以檢查輸出以確定 MATLAB 正在為每種類型讀取什么。 數字數據將在num (並且與您的問題中的subsetA相同),文本數據將在txt ,原始數據將在raw

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM