为什么这个索引超过了矩阵维度?
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 编辑器。这会告诉您使用脚本时哪一行导致了问题,因此调试会变得更容易。
我在调整一些 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 编辑器。这会告诉您使用脚本时哪一行导致了问题,因此调试会变得更容易。