Matlab找到匹配元素的索引并替换值

时间:2016-01-15 18:50:05

标签: matlab indexing comparison matching

我想使用Matlab的find - 函数创建一个索引数组。这是我需要做的:

我有一个数组a1,其中包含datenum格式(不完整集)的时间数据和包含某些值的数组v1(与a1相同的长度)。 / p>

我现在创建了一个新的数组a2,其中还包含datenum格式的时间数据(这次是完整集,因此length(a2) > length(a1))并初始化了一个数组v2,其中零{{1} }}

我想要做的是将length(a2)中的零替换为v2 v1匹配a1的数据。

我认为这是索引的一个案例,我最终想要做以下事情:

a2

但是,当我尝试创建一个数组v2(ind) = v1; % whereas ind contains the indices of the matched elements of a1 and a2 来存储a1与ind匹配的索引时,我收到与维度相关的错误:

a2

错误:ind = find(a1==a2);

起点:

Matrix dimensions must agree

期望的结果:

a1 = [2;3;4;6;9]; % simplified time-vector ("incomplete")
v1 = [1;2;1;1;2]; % data for each time-point in a1
a2 = [1;2;3;4;5;6;7;8;9;10]; % "complete" time-vector
v2 = zeros(length(a2),1); % initialize final output variable

有人可以帮助我吗?

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

如上面评论中所述,ismember在按以下方式使用时可以检索a1a2匹配的索引:

[ind1, ind2] = ismember(a1,a2,'rows');
然后

ind2包含指标,我使用如下:

v2(ind2) = v1;