首页 > 解决方案 > 如何处理涉及三个向量的索引?

问题描述

我有以下三个向量:

trans_now=[1 2 4]; data2send=[1 0 0 1]; datasent=[0 0 0 0];

我想datasent1那些属于tran_now其成员且data2send状态为1. 例如 4 是 的成员,trans_now因此data2send(4)应该1设置datasent(4)1

我可以使用 for 循环和 if 语句来做到这一点,如下面的代码所示。

for i=1:length(trans_now)
    if data2send(trans_now(i))==1
        datasent(trans_now(i))=1;
    end
end

但是我想要一个班轮代码。我试过的一个班轮代码是

req_sent(req2send(trans_now)==1)=1;

但它不起作用。输出应将datasent向量设置为[1 0 0 1]

标签: matlab

解决方案


你可以通过两种方式解决这个问题:

1.

data_sent(trans_now) = data2send(trans_now)

输出是:

数据发送 = 1 0 0 1

在此解决方案中,我假设 的所有初始值data_sent都以 as 开头,0并且您需要分配一次。

2.

datasent(intersect(find(data2send == 1), trans_now)) = 1

输出是:

数据发送 = 1 0 0 1

在这个解决方案中,没有使用任何假设,您只分配索引,data2send == 1并且也出现在trans_now


推荐阅读