Joh*_*ohn 6 matlab vectorization conditional-operator
我有一个布尔数组调用它flag
.
我有两个数字数组ifTrue
,ifFalse
.所有这些数组都是相同的大小.出于这个问题的目的,假设这些数组中的每个元素都是唯一的.
我想要一个g
具有该属性的函数
a = g(flag, ifTrue, ifFalse)
all(flag == (a == ifTrue))
all(~flag == (a == ifFalse))
Run Code Online (Sandbox Code Playgroud)
或者用英语,我想g
在if 为true ifTrue
时返回元素flag
,ifFalse
在flag
false 时返回元素.
或者,在matlab中,我可以用循环来做到这一点:
a = zeros(size(ifTrue));
for i = 1 : numel(ifTrue);
if flag(i)
a(i) = ifTrue(i)
else
a(i) = ifFalse(i)
end
end
Run Code Online (Sandbox Code Playgroud)
有矢量化的方法吗?
谢谢
%# Given, for example:
ifTrue = 1:10
ifFalse = -ifTrue
flag = rand(1,10) > 0.5
%# First, set 'a' to ifFalse
a = ifFalse
%# Then override the places where flag is true
a(flag) = ifTrue(flag)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
719 次 |
最近记录: |