MATLAB中矢量范围表达式的逻辑运算

MATLAB中矢量范围表达式的逻辑运算,matlab,vector,range,expression,logical-operators,Matlab,Vector,Range,Expression,Logical Operators,能给我点类似的吗 A=1:10; A(1:2 && 5:6)=0; 这意味着我想在一行中把向量索引表达式中的特定范围归零 可能吗 如果我想把剩下的都归零呢 A(~[1:2]) = 0 什么是不在向量索引中的逻辑方法 谢谢以下功能应该可以正常工作: idx = [1:2,5:6]; A(idx) = 0 如果要将索引向量的补码归零: idx = [1:2,5:6]; A(~ismembc(1:length(A),idx)) = 0 其中是一个更快、更轻量级的ismem

能给我点类似的吗

A=1:10;

A(1:2 && 5:6)=0;
这意味着我想在一行中把向量索引表达式中的特定范围归零

可能吗


如果我想把剩下的都归零呢

A(~[1:2]) = 0 
什么是不在向量索引中的逻辑方法


谢谢

以下功能应该可以正常工作:

idx = [1:2,5:6];
A(idx) = 0

如果要将索引向量的补码归零:

idx = [1:2,5:6];
A(~ismembc(1:length(A),idx)) = 0

其中是一个更快、更轻量级的
ismember
版本,它假定数组已排序且不稀疏,没有
NaN
元素。(归功于。)

只要做
A([1:25:6])
。也就是说,只需创建一个你想归零的索引向量。

如果我想归零所有其他的索引,比如(~[1:2])=0呢?什么是不在向量索引中的逻辑方法?我编辑了我的答案,使你提供的索引的补码也为零。谢谢,效果很好,但是不是有一些逻辑表达式吗?这样不应该更快吗?
~
运算符只能处理逻辑/布尔数组,而不能处理像
[1:2,5:6]
这样的数字数组。
ismembc
函数是将索引列表
[1 2 5 6]
转换为适当的逻辑数组
[1 1 0 0 1 0 0 0 0]
的一种方法,因此我们可以使用
~
对其进行操作。应该很快。在我的计算机上执行此操作10000次需要
0.13
秒。您好,我找到了一种新的单行方式来执行此操作,现在我来看看是否更快:)