为什么这个指数超过矩阵尺寸?

时间:2015-01-06 06:10:34

标签: matlab matrix indexing

我在调整一些matlab代码时遇到了麻烦,它只是根据某些参数绘制了一些我接受或拒绝的数据,然后编译接受的数据集。下面的代码是我正在调整的,但是它被设置为以行的形式读取数据。我将其更改为使用列格式的数据,但在最后Index exceeds matrix dimensions循环后仍然遇到 for 错误,据我所知,应该在第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

1 个答案:

答案 0 :(得分:2)

最后一行中的命令导致此问题。 indices负责cloumns。

替换为:

new_test = test(:, indices);

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