Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
倍频程(MATLAB):某些输入的函数错误_Matlab_Octave - Fatal编程技术网

倍频程(MATLAB):某些输入的函数错误

倍频程(MATLAB):某些输入的函数错误,matlab,octave,Matlab,Octave,我为过滤器编写了以下函数 function filteredX=dftFilter(X,lowerBound,upperBound) lower=max(ceil((lowerBound/(2*pi))*length(X)), 1); upper=floor((upperBound/(2*pi))*length(X)); filteredX=zeros(1,length(X)); for int=lower:upper filteredX(int)

我为过滤器编写了以下函数

function filteredX=dftFilter(X,lowerBound,upperBound)
    lower=max(ceil((lowerBound/(2*pi))*length(X)), 1);
    upper=floor((upperBound/(2*pi))*length(X));
    filteredX=zeros(1,length(X));
    for int=lower:upper
        filteredX(int)=X(int);
    end
endfunction
如果我将其用于以下输入,则一切正常

dftFilter([3, 5, 7, 9, 11, 13, 12, 14, 16, 18, 20], (pi / 4), ((3 * pi) / 4))
dftFilter([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ((3 * pi) / 4), (2 * pi)
但是当我在这一个上使用它时(注意数组的长度现在是11而不是10)

它给出了一个错误

subscript indices must be either positive integers or logicals.
在线

filteredX(int)=X(int);
我试图在控制台中模拟这个过程

X = [2, 4, 6, 7, 2, 11, 23, 12, 34, 21, 17];
lower=max(ceil((0/(2*pi))*length(X)), 1);
upper=floor((2*pi/(2*pi))*length(X));
filterexX=zeros(1,length(X));
for int=lower:upper;
filteredX(int)=X(int)
end
而且效果很好


PS:我正在使用倍频程打印
int
的值,在你的循环中!您将看到它不是整数,因此您使用实数而不是整数来索引矩阵

max(0,1)不是给出了1而不是0吗?我读了KudayarPirimbaev的代码,但我犯了一个错误。对不起,我没有赶时间投票否决我不是办法,先给我提建议,如果我没有表现出任何努力,那么就投票否决我吧!:)@KudayarPirimbaev您在第一个块中的代码和在线执行的代码中缺少一些括号!让我们
X = [2, 4, 6, 7, 2, 11, 23, 12, 34, 21, 17];
lower=max(ceil((0/(2*pi))*length(X)), 1);
upper=floor((2*pi/(2*pi))*length(X));
filterexX=zeros(1,length(X));
for int=lower:upper;
filteredX(int)=X(int)
end