比较具有不同值的不同大小的向量

时间:2015-10-20 13:19:02

标签: matlab for-loop vector indexing

我仍然很熟悉使用Matlab和编程。我有一个n次试验的数据集,其中({在这种情况下] m是相关的。所以我有m - by - 1向量,其中包含相关试验的索引(rel)。我有另一个向量(Correctn - 由 - 1),由01组成。 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解释我想要的东西......

谢谢大家的回答。我意识到我的问题并不像我想的那么清晰(我猜也是一个学习过程......)所以你的建议并不是我需要的。我很抱歉不清楚。

  1. 正确不合逻辑,它确实包含0和1但这些指的是正确或不正确的答案(我实际上不确定这是否重要,但我想我告诉你了)
  2. rel是所有试验的原始数据的子集(所有试验= n次试验),正确的长度与所有试验的原始载体相同(n次试验)。因此,rel包含(对我来说)原始数据的相关试验的索引,并且这种方式与Correct相关联。
  3. 我希望这会让我的问题更加清晰,如果没有,请告诉我!

    谢谢!

2 个答案:

答案 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];

现在我们使用mn编入索引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(即它包含真实和谬误,而不是01 s。

您实际上并不需要循环(在您的情况下这很明显,因为您循环i并且从未在循环中实际使用i):

m = numel(rel)
CC = rel(Correct(1:m))

您收到该错误的原因是Correct包含的元素多于rel,因此您尝试处理超出rel末尾的元素。我只考虑m的第一个Correct元素来解决上述问题。