2015-10-17 95 views
-1

我有一個項目,使FIR濾波器的係數,但是當在最低階低通濾波器的過程中存在着錯誤,MATLAB「索引出界的」錯誤

enter image description here

我不知道這是什麼意思以及需要修復的部分:

function [ output_args ] = FIR_FilterCoeff() 
N = 100;  % FIR filter order 
Fp = 20e3;  % 20 kHz passband-edge frequency 
Fp = 20e3;  % 20 kHz passband-edge frequency 
Fs = 96e3;  % 96 kHz sampling frequency 
Rp = 0.00057565; % Corresponds to 0.01 dB peak-to-peak ripple 
Rst = 1e-4;  % Corresponds to 80 dB stopband attenuation 

NUM = firceqrip (N,Fp/(Fs/2),[Rp Rst],'passedge'); 

N2= 200; % change filter order to 200 

NUM200 = firceqrip(N2,Fp/(Fs/2),[Rp Rst],'passedge'); 

Fst = 23e3; % transition width = Fst-Fp 
NUM_MIN = firgr('minorder',[0,Fp/(Fs/2),Fst(Fs/2),1],[ 1 1 0 0 ],[Rp Rst]); 
+0

您不應該將錯誤消息作爲圖片粘貼到您的問題中。您應該將他們的文本直接複製並粘貼到問題中。請參閱[問]和[mcve]以獲取有關創建優質問題的提示。 – IKavanagh

回答

0

您的錯誤位於您最後一行的Fst(Fs/2)。它有1個值23e3。圓括號,(),在MATLAB中直接使用變量後用於indexing variables

當你鍵入Fst(Fs/2)您試圖訪問48000元素Fst但它並不存在,因此MATLAB拋出一個錯誤。我想你可能意味着這是

Fst/(Fs/2) 

或(可能)

Fst*(Fs/2) 

需要的*標誌在MATLAB執行乘法。簡單地使用圓括號()是不夠的,因爲他們有另一個目的,Matrix Indexing