代码之家  ›  专栏  ›  技术社区  ›  Tom Mozdzen

如何使用来自向量B的条件和来自向量a值的条件对Matlab向量a进行操作

  •  0
  • Tom Mozdzen  · 技术社区  · 11 月前

    我有两个向量。一个带有时间信息,一个带有频道信息。
    例如,A具有时间值

    A=1、2.5、2.7、3、4、5、6、7、8、9、10

    B具有通道值

    B=1,1,2,2,2,2,1,2,2,1,1,2,1,2,1,1,1

    我希望仅当数组B==1并且仅当数组a中的这些元素的值在7和9之间时(例如a>=7&a<=9),才向数组a的元素添加一个数字。

    我知道如何处理一个约束,但不知道如何处理第二个约束。 对于一个约束,我会使用

    A(B==1)=A(B==1)+“某个数字”

    我需要这样做,因为我添加的数字会根据数组A中的值而变化。 如果A是通道1的值,我最终需要将数字添加到A中的每个值上。 我的数组是中等大小的-10^8个元素,但我只需要在数组A中使用大约50个范围。这些值是单调递增的,但不是有规律的。

    如果我能在一个范围内完成,我不介意在其他范围内循环。

    1 回复  |  直到 11 月前
        1
  •  1
  •   Luis Mendo    11 月前

    您可以使用与用于一个约束的代码中相同的逻辑。最好定义一个索引变量,这样你就可以在赋值语句的两侧使用它:

    ind = (B==1) & (A>=7) & (A<=9); % logical index of elements to be modified
    A(ind) = A(ind) + some_number;