matlab - 倍频程/Matlab : vectorising '==' operator?

标签 matlab operators find octave vectorization

我可以使用“==”运算符和“find()”函数在向量“数据”中查找值(即 45)的位置:

data = [ 71 65 23 45 34 12 21 34 52 ];
value = 45;

find (data == value)
ans =  4

有没有一种方法可以在不使用循环的情况下对多个值执行相同的操作,即我想在一次调用中获得 [ 4 5 7 ]:

values = [ 45 34 21 ];
find (data == values)
error: mx_el_eq: nonconformant arguments (op1 is 1x9, op2 is 1x3)
error: evaluating argument list element number 1
error: evaluating argument list element number 1

最佳答案

试试 ismember功能:

data = [ 71 65 23 45 34 12 21 34 52 ];
values = [ 45 34 21 ];

find(ismember(data, values))

给予:

ans =

 4     5     7     8

关于matlab - 倍频程/Matlab : vectorising '==' operator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5183457/

相关文章:

Perl 数字彼此不相等,但在打印到 STDOUT 时显示相同

c++ - 在指针列表中找到一个项目

python - 对数时间Python中有序列表中的位置元素

matlab - 在 switch-case MATLAB 中执行多个案例

linux - 在 matlab 脚本中运行 linux 命令 "cat"

matlab - Matlab 中的这个 3D 图有什么问题

c# - 以编程方式指定运算符

与前置和后置增量运算符混淆

c++ - 为什么 string::find 返回 size_type 而不是迭代器?

c - 如何使用 Embedded Coder 在 MATLAB 中内联 Level-2 .m S-Functions