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

Matlab查找匹配元素的索引并替换值,matlab,indexing,comparison,matching,Matlab,Indexing,Comparison,Matching,我想使用Matlab的find-函数创建一个索引数组。以下是我需要做的: 我有一个数组a1,其中包含datenum格式的时间数据(不完整集),还有一个数组v1(与a1长度相同),其中包含一些值 现在,我创建了一个新数组a2,其中还包含datenum格式的时间数据(这次是完整的集合,因此length(a2)>length(a1)),并初始化了一个数组v2,其中的零为length(a2) 我想做的是用v1中的数据替换v2中的零,其中a1匹配a2 我认为这是索引的一个例子,我最终想做以下几点: v2(

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

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

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

我想做的是用
v1
中的数据替换
v2
中的零,其中
a1
匹配
a2

我认为这是索引的一个例子,我最终想做以下几点:

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

ind = find(a1==a2);
错误:
矩阵维度必须一致

起点:

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
预期结果:

v2 = [0;1;2;1;0;6;0;0;2;0] % values of v1 inserted where a1 matches a2
有人能帮我吗


非常感谢

如上文评论中所述,
ismember
用于检索
a1
a2
匹配的索引时起作用:

[ind1, ind2] = ismember(a1,a2,'rows');
ind2然后包含标记,我使用的标记如下:

v2(ind2) = v1;

我很难理解你的问题陈述。是否可以提供一个简短的示例和预期的输出?请尝试
ismember
而不是
=
。添加一个简化的示例和所需的输出。希望这有助于理解我的问题ismember'在我尝试它时不起作用…
ismember
起作用了!唯一的区别是我必须使用
[ind1,ind2]=ismember(a1,a2,'rows')
,而ìnd2'则提供了我需要的索引。谢谢