在matlab中向量化以下代码

时间:2013-01-30 20:23:25

标签: matlab vectorization

假设我有一个向量,比如说S = 1:10,一个固定数K = 5。有没有办法矢量化以下代码?

v=zeros(1:10);

for i=1:10
    if S(i)>K
        v(i)=S(i)-K;
    else 
        v(i)=0;
    end
end

3 个答案:

答案 0 :(得分:4)

v = max(S-K, 0);

[填充空间足够长的空间]

答案 1 :(得分:2)

另一种选择:

v = (S-K).*(S>K);

答案 2 :(得分:0)

仅用于教育目的:

v = S - K;
v(v<=0) = 0;

请注意,这为您提供了一定的灵活性,您可以轻松地将最终0替换为NaN,或者通过将其替换为[]来删除所有这些条目