Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 - Fatal编程技术网

Matlab下标索引错误-下标是否正确?

Matlab下标索引错误-下标是否正确?,matlab,Matlab,我有一个问题,我得到一个错误,我的下标索引是错误的,但他们不是,我有很多检查,以确保他们不是。这段代码几乎每次都有效,所以我不知道为什么这次失败了 if (idx - ofs <= 0) || (idx - ofs + slen > length(A)) %skip this iteration if it's too close to the beginning or end if DEBUGMODE fpri

我有一个问题,我得到一个错误,我的下标索引是错误的,但他们不是,我有很多检查,以确保他们不是。这段代码几乎每次都有效,所以我不知道为什么这次失败了

if (idx - ofs <= 0) || (idx - ofs + slen > length(A)) %skip this iteration if it's too close to the beginning or end
                if DEBUGMODE
                    fprintf('Skipping pulse peak at t = %d\n', pulse_peaks(k)); 
                    % keyboard;
                end
                continue;
            end 
            nonSkipped_iterations = nonSkipped_iterations + 1;
            % fprintf('placing the %dth peak - idx=%d\n', k, idx);
            s = A( idx + (1:slen) - ofs); %Iterate through A, assign all the values between (idx - ofs + 1) and (idx + slen - ofs) to a new vector
编辑:我不知何故失去了对我正在使用的服务器的权限,我正在努力恢复该权限,但是:

在违规情况下:

idx is ~ 10 000
ofs is ~ 5 000
slen is ~ 1 000
length(A) is 1 000 000

没有指定idx、ofs或slen的来源,但如果其中任何一个是从任何可能涉及非整数的计算中获得的计算值,则它们可能与整数值略有偏差。由于所有值在MATLAB中都是默认值,因此它们可能会受到非常小的浮点错误的影响。有关讨论,请参阅

简而言之,您应该尝试将它们四舍五入,看看这是否有帮助:

s = A(round(idx + (1:slen) - ofs));

请你粘贴完整的错误信息好吗?请给出一个idx+1:slen ofs和A维度的示例。如果你能提供足够的代码让我们自己测试这个问题,那就更好了。如上所述,我已经失去了服务器访问权限,但当我得到它时,我会发布一个最小的工作示例这是我考虑过的,我目测确认它们不是小数,但我会给出一个循环shot@BrydonGibson:视觉确认可能并不总是足够好,因为链接问题显示,即数字的显示方式有时可能会产生误导。我错过了手机上的链接-谢谢,这很有意义,我会尝试一下。
s = A(round(idx + (1:slen) - ofs));