我想使用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
有人可以帮助我吗?
非常感谢提前!
答案 0 :(得分:1)
如上面评论中所述,ismember
在按以下方式使用时可以检索a1
与a2
匹配的索引:
[ind1, ind2] = ismember(a1,a2,'rows');
然后ind2包含指标,我使用如下:
v2(ind2) = v1;