Построение максимума и минимума - PullRequest
0 голосов
/ 25 апреля 2018
plot(timevec,fuelCost,'-k')
grid on
xlabel('Time(days)');
ylabel('Amount of Money Spent ($)');
title({'Plant Production Cost';'01 April 2013 - 30 April 2013'})

Если я строю этот график, как мне поступить при построении максимумов и минимумов, содержащихся в графике?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Непонятно, хотите ли вы строить только максимумы и минимумы, если просто хотите выделить их внутри существующего графика ... но я думаю, что это должно подойти для ваших нужд:

vec = randi([20 50],100,1);
vec_len = numel(vec);
vec_seq = 1:vec_len;

val_max = max(vec);
vec_max = nan(vec_len,1);
vec_max(vec == val_max) = val_max;

val_min = min(vec);
vec_min = nan(vec_len,1);
vec_min(vec == val_min) = val_min;

plot(vec_seq,vec,'-k');
hold on;
grid on;
plot(vec_seq,vec_max,'.r','Markersize',25);
plot(vec_seq,vec_min,'.b','Markersize',25);
hold off;

У вас не должно быть проблем с модификацией кода выше, чтобы адаптировать его к вашей текущей структуре, так как он очень простой.Это вывод:

Output

0 голосов
/ 25 апреля 2018

Предполагая, что fuelcost - это один вектор данных (т.е. не многостолбцовая матрица), и вам нужны горизонтальные линии по всему диапазону данных, затем после ваших текущих строк используйте

timespan = [min(timevec) max(timevec)]; % or timespan = xlim(gca);
line(timespan,[1 1]*max(fuelCost),'Color',[1 0 0]);
line(timespan,[1 1]*min(fuelCost),'Color',[0 1 0]);

Если вам нужны только точки в правильных точках на графике, то после ваших текущих линий используйте

[max_val,i_max] = max(fuelCost);
[min_val,i_min] = min(fuelCost);
line(timevec([i_min,i_max]),[min_val,max_val],'Marker','.','Linestyle','none','Markersize',10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...