为逻辑值编写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
的解决方案。