我仍然很熟悉使用Matlab和编程。我有一个n
次试验的数据集,其中({在这种情况下] m
是相关的。所以我有m
- by - 1
向量,其中包含相关试验的索引(rel
)。我有另一个向量(Correct
,n
- 由 - 1
),由0
和1
组成。 n
总是大于m
。我需要知道哪些试验(m
- by - 1
相关试验)在1
- by - n
向量中有1
。我尝试了for
- 循环,但我总是收到错误'Index exceeds matrix dimensions.'
这是我的代码:
for i=1:length(rel);
CC=rel(find(Correct==1));
end;
我认为它应该相当简单,但我还不知道如何向Matlab解释我想要的东西......
谢谢大家的回答。我意识到我的问题并不像我想的那么清晰(我猜也是一个学习过程......)所以你的建议并不是我需要的。我很抱歉不清楚。
我希望这会让我的问题更加清晰,如果没有,请告诉我!
谢谢!
答案 0 :(得分:1)
从你的问题中你不清楚你想要做什么,但我想我有一个想法。
你有一个类似于
的向量n
>> n = round(rand(1, 10))
n =
0 1 1 0 0 0 1 0 0 1
和m
是此向量的索引,类似于
>> m = [1 3 7 9];
现在我们使用m
将n
编入索引n(m)
,这将返回与n
中的元素对应的m
的值。接下来,我们需要检查这些是否与1
n(m) == 1
相等,最后我们需要确定m
的{{1}}的{{1}}值等于n
索引。所以我们完全放弃了
1
要查找正在返回的>> m(n(m) == 1)
ans =
3 7
的索引,您可以使用
m
答案 1 :(得分:0)
我假设Correct
的类型为logical
(即它包含真实和谬误,而不是0
和1
s。
您实际上并不需要循环(在您的情况下这很明显,因为您循环i
并且从未在循环中实际使用i
):
m = numel(rel)
CC = rel(Correct(1:m))
您收到该错误的原因是Correct
包含的元素多于rel
,因此您尝试处理超出rel
末尾的元素。我只考虑m
的第一个Correct
元素来解决上述问题。