簡體   English   中英

Matlab:使用邏輯索引刪除IF-ELSE條件語句

[英]Matlab: Remove IF-ELSE Conditional statements using Logical Indexing

我不完全理解如果不使用if語句或循環該怎么做這個問題。

n = input ('What is the vector length? ');
y = rand(n,1);
x = rand(n,1);
p = zeros(n,1);
for i=1:n
    if (y(i) > 0.5 && x(i) < 0.5) || y(i) < 0.2
        p(i) = y(i) + x(i);
    else
        p(i) = (y(i)*x(i))^2
    end
end

a)僅使用向量運算和邏輯索引重新實現代碼(即,不能使用任何循環或分支)。

這樣,您就不需要初始化p

cond1 = (y > 0.5 & x < 0.5) | y < 0.2;
p = cond1.*(y + x) + ~cond1.*((y.*x).^2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM