lundi 16 septembre 2019

I need help plotting different permutations of an if/else command in different colors on the same plot

Basically I have a code where it produces a plot of all possible permutations between Cost and Reliability. There's a total of 864 data points split up between 8 rows. Five of the rows have 2 options and three of them 3 options.

Given here is a copy of my code. I'm trying to have the permutations of 'Other Cameras' and 'Depth & Structure Testing' have a different color with the other six possibilities. I tried using the 'gscatter' command but didn't have much luck with it.

I believe I need to have the scatter command in the if/else statements themselves, although I'm not too sure what to plot in the 'X' and 'Y' for the 'scatter' command. Currently my code is set up for plotting all the data in one color. I deleted my code with the 'gscatter' because I got many errors and when I tried to fix them the plot ultimately didn't work as planned.

% Pareto_Eval
baseline_cost = 45;
nrows = 8;
%Initialize Variables
for aa = 1:nrows
   cost_delta(aa) = 0;
   reliability(aa) = 1;
end
icount = 1;

   %Propulsion
for row1 = 1:2  
    if row1 == 1
        cost_delta(1)= -7;
        reliability(1) = 0.995;
    elseif row1==2
        cost_delta(1)=0;
        reliability(1)=.99;
    end


    %Entry Mode
for row2 = 1:2
    if row2 == 1
        cost_delta(2) = -3;
        reliability(2) = .99;
    else
        cost_delta(2) = 0;
        reliability(2) = .98;
    end


    %Landing Method
for row3 = 1:3
    if row3 == 1                %if needs declaration
        cost_delta(3)= 0;
        reliability(3) = .99;
    elseif row3 == 2            %elseif needs declaration
        cost_delta(3) = 4;
        reliability(3) = .995;
    else                        %else does not need declaration
        cost_delta(3) = -2;
        reliability(3) = .95;
    end


    %Lander Type
for row4 = 1:3    
    if row4 == 1
        cost_delta(4)= 10;
        reliability(4) = .99;
    elseif row4 == 2
        cost_delta(4) = 0;
        reliability(4) = .99;
    else
        cost_delta(4) = 15;
        reliability(4) = .95;
    end


    %Rover Type
 for row5 = 1:2
    if row5 == 1
        cost_delta(5)= -2;
        reliability(5) = .98;
    else
        cost_delta(5) = 0;
        reliability(5) = .975;
    end


    %Power Source
for row6 = 1:2
    if row6 == 1
        cost_delta(6) = -3;
        reliability(6) = .95;
    else
        cost_delta(6) = 0;
        reliability(6) = .995;
    end   

    %Depth & Structure Testing
for row7 = 1:2
    if row7 == 1
        cost_delta(7) = 0;
        reliability(7) = .99;
    else 
        cost_delta(7) = 2;
        reliability(7) = .85;
    end      

      %Other Cameras
for row8 = 1:3    
    if row8 == 1
        cost_delta(8)= -1;
        reliability(8) = .99;
    elseif row8 == 2
        cost_delta(8) = -1;
        reliability(8) = .99;
    else
        cost_delta(8) = 0;
        reliability(8) = .9801;
    end

    cost_delta_total = 0;
    reliability_product = 1;

    for bb=1:nrows
        cost_delta_total = cost_delta_total + cost_delta(bb);
        reliability_product = reliability_product*reliability(bb);
    end

    total_cost(icount) = baseline_cost + cost_delta_total;
    total_reliability(icount) = reliability_product;
    icount = icount + 1;

end; end; end;      %Rows 1,2,3
end; end; end;      %Rows 4,5,6 
end; end;           %Rows 7,8


%Plot the Pareto Evaluation    
fignum=1;
figure(fignum)
sz = 5;
scatter(total_reliability, total_cost, sz, 'blue')
xlabel('Reliability')
ylabel('Cost')
title('Pareto Plot')   

Any help is appreciated. I don't have a lot of experience with Matlab and I've tried looking around for help but nothing really worked.

Aucun commentaire:

Enregistrer un commentaire