为什么这个索引超过了矩阵维度?

Why is this index exceeding matrix dimensions?

我在调整一些 matlab 代码时遇到问题,它只是根据一些参数绘制一些我接受或拒绝的数据,然后编译接受的数据集。下面的代码是我正在改编的,但是它被设置为按行读取数据。我将其更改为使用列格式的数据,但在最终的 for 循环之后不断出现 Index exceeds matrix dimensions 错误,据我所知应该在之后终止第 10 次出现。作为菜鸟,任何指导都将不胜感激!

代码如下:

test = rand(3,5);           % generate 5 rows of random data
accept = 0;
reject = 0;
indices = 1:size(test,2);    % initialize indices of data based on columns
figure;


for ii = 1:size(test,2)
    plot(test(:,ii));
    [x,y,button] = ginput(1);
    if button == 97 % A - for accept
        disp('Input Accepted!');
        accept = accept + 1;
    elseif button == 114 % R - for reject
        indices(ii) = 0;
       disp('Input Rejected!');
       reject = reject + 1;
    else
        disp('Button not recongnized!')
    end
    size(test,2)

end
accept  % Display number of accepted
reject  % Displey number of rejected
indices = indices(indices~=0); % Remove indices that were rejected
new_test = test(indices,:); % Create new dataset with only accepted data

最后一行的命令导致了这个问题。 indices负责cloumns。

替换为:

new_test = test(:, indices);

我的建议是,当您的命令多于几行时,不要使用命令 window。您应该创建一个新脚本并将代码写入 MATLAB 编辑器。这会告诉您使用脚本时哪一行导致了问题,因此调试会变得更容易。