Matlab: результаты подсчета и сортировки данных в обратном кумулятивном порядке

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

Например:

  • за 7500 часов в году 25 градусов и холоднее
  • за 6000 часов в году 20 градусов и холоднее

Я получаю результат, который мне нужен, используя скрипт Matlab ниже:

    filenameTRY2035='TZ10.dat';
    daten = dlmread(filenameTRY2035);
    TZ10 = sort(daten(1:length(daten)));

    A = length(TZ7); A = A';

    % plot
    figure(1)
    clf(1)

    hold on;
    h1 = plot(TZ10,A);

Теперь я хочу, чтобы температуры считались наоборот.

Например:

  • через 1000 часов в году 25 градусов и выше
  • в 3500 часов в году 20 градусов и жарче

Может ли кто-нибудь помочь мне изменить мой сценарий так, чтобы я получал нужные мне сюжеты?

Большое спасибо, Шайенн


person Cheyenne    schedule 03.07.2015    source источник


Ответы (1)


Итак, скажем, у вас есть

TZ10 =

        .... 7000  7300  7500 ....

7500 -> 25° или ниже

7300 -> 24° или ниже

7000 -> 23° или ниже

...

А в году 8766 часов.

Тогда обратный порядок будет

l = length(TZ10);
TZ10_reverse(l) = 8766 - TZ10(1)
for temp = 2:l
    TZ10_reverse(l - temp + 1) = (8766 - TZ10(temp)) + (TZ10(temp) - TZ10(temp - 1));
end

Потому что если в году 8766 часов и 7500 часов равны или холоднее 25° в году, то 8766 - 7500 строго теплее 25° в году и TZ10(25) - TZ10(24) дни равны 25°

Я также сделал это, чтобы привести его в порядок!

Кстати...

TZ10 = sort(daten(1:length(daten)));

эквивалентно

TZ10 = sort(daten);

Элементы daten от 1 до максимального индекса daten — это, по сути, сам daten!

person Ikaros    schedule 03.07.2015
comment
Без проблем! Не забудьте проверить ответ как принятый;) - person Ikaros; 08.07.2015