MATLAB: Can’t apply an IF function with 100000*1 matrix

if functionMATLABmonte carloStatistics and Machine Learning Toolbox

Hi! I built this code:
if A1 <0
D = 0.8;
elseif A2 <0
D = 0.7;
elseif A3 <0
D = 0.6;
elseif A4 <0
D = 0.5;
else
D = 0.3;
end
My problem is that A1, A2, A3 and A4 are 100000×1 matrixes from Monte Carlo Simulations so I would expect D to be 100000×1 too. Instead I get a flat value like 0.8. What I am doing wrong? The strange part is that it works when test with a 5×1 matrix. Thanks a lot.

Best Answer

  • To make your code work, wrap a loop around it. E.g.,
    D = zeros(size(A1));
    n = numel(D);
    for k=1:n
    if A1(k) <0
    D(k) = 0.8;
    elseif A2(k) <0
    D(k) = 0.7;
    elseif A3(k) <0
    D(k) = 0.6;
    elseif A4(k) <0
    D(k) = 0.5;
    else
    D(k) = 0.3;
    end
    end
    Or perhaps you might use a vectorized approach. E.g.:
    D = 0.3 * ones(size(A1));
    D(A4<0) = 0.5;
    D(A3<0) = 0.6;
    D(A2<0) = 0.7;
    D(A1<0) = 0.8;