为逻辑值编写Matlab

为逻辑值编写Matlab,matlab,Matlab,假设T=1:20;P=[2 6 9 11 15 19] 如何在范围T中为p写入逻辑值 我想要的答案是:flag=[01 0 0 0 1 0 0 1 0 0 0 0 1 0]您可以定义一个逻辑向量flag的大小T,然后使用p作为该标志的索引向量,以提升到true: T=1:20 ; P=[2 6 9 11 15 19] ; flag = false(size(T)) ; flag(P) = true ; flag = 0 1 0 0 0 1

假设
T=1:20;P=[2 6 9 11 15 19]

如何在范围
T
中为
p
写入逻辑值


我想要的答案是:
flag=[01 0 0 0 1 0 0 1 0 0 0 0 1 0]
您可以定义一个逻辑向量
flag
的大小
T
,然后使用
p
作为该标志的索引向量,以提升到
true

T=1:20 ; P=[2 6 9 11 15 19] ;

flag = false(size(T)) ;
flag(P) = true ;

flag =
     0     1     0     0     0     1     0     0     1     0     1     0     0     0     1     0     0     0     1     0

您可以定义逻辑向量
标志
的大小
T
,然后使用
p
作为标志的索引向量,以提升为

T=1:20 ; P=[2 6 9 11 15 19] ;

flag = false(size(T)) ;
flag(P) = true ;

flag =
     0     1     0     0     0     1     0     0     1     0     1     0     0     0     1     0     0     0     1     0

为了好玩,Hoki回答的另一个选择是:

T(P) = 0;
flag = ~T

这会将p中的所有值设置为零,然后检查T中的值是否为0。当然,这样做的缺点是它会覆盖
T
。注:我会选择Hoki的答案

为了好玩,Hoki回答的另一个选择是:

T(P) = 0;
flag = ~T
这会将p中的所有值设置为零,然后检查T中的值是否为0。当然,这样做的缺点是它会覆盖
T
。注:我会选择Hoki的答案

正是为了完成这项任务而使用的-

ismember(T,P)
用于此任务-

ismember(T,P)

T
总是
1:n
?是
T
总是
1:n
?哇,我怎么能忘记ismember?这个解决方案实际上可能更安全,因为如果
P
的某个元素恰好超出其范围,它是唯一不会扩展
T
的解决方案。哇,我怎么能忘记ismember?这个解决方案实际上可能更安全,因为如果
P
的元素恰好超出其范围,它是唯一一个不会扩展
T
的解决方案。