MATLAB:errorn in butter()命令

MATLAB:errorn in butter()命令,matlab,error-handling,Matlab,Error Handling,我编写了以下函数: function [output_signal] = AddDirectivityError (bat_loc_index, butter_deg_vector, sound_matrix) global chirp_initial_freq ; global chirp_end_freq; global sampling_rate; global num_of_mics; global sound_signal_length;

我编写了以下函数:

function [output_signal] = AddDirectivityError (bat_loc_index, butter_deg_vector, sound_matrix)

    global chirp_initial_freq ;
    global chirp_end_freq;
    global sampling_rate;
    global num_of_mics; 
    global sound_signal_length;
    for (i=1 : num_of_mics)
        normalized_co_freq = (chirp_initial_freq + chirp_end_freq)/ (1.6* sampling_rate);
        A=sound_matrix  ( i, :  )  ;
        peak_signal=max(A);
        B=find(abs(A)>peak_signal/100);
        if (butter_deg_vector(i)==0)
            butter_deg_vector(i)=2;
        end
        [num, den] = butter(butter_deg_vector(i), normalized_co_freq, 'low');// HERE!!!
        filtered_signal=filter(num,den, A );
        output_signal(i, :)=filtered_signal;
    end
此函数多次运行,没有任何错误。但是,当我到达以下行时:
[num,den]=butter(butter_deg_向量(I),normalized_co_freq,'low')

局部变量是:
i=3,butter_deg_向量(i)=1,normalized_co_freq=5.625000e-001

MATLAB提示一个错误,表示:

??? Error using ==> buttap Expected N to be integer-valued.

"Error in ==> buttap at 15 validateattributes(n,{'numeric'},{'scalar','integer','positive'},'buttap','N');

Error in ==> butter at 70 [z,p,k] = buttap(n);"

我不明白为什么这个问题会发生,尤其是在这个迭代中。为什么此函数会提示错误,尤其是在这种情况下?

尝试更改以下代码行:

[num, den] = butter (round(butter_deg_vector(i)), normalized_co_freq, 'low');

发生此错误时,您能否键入
whos
?因为,
butter_deg_vector
似乎不包含整数…键入“whos”?这是什么意思?似乎您提供的不是
int
,而是
float