У меня есть матрица целочисленных значений, ось x представляет разные дни, а ось y представляет час дня. И в каждой ячейке есть число, указывающее, сколько часов в сутках соответствует каким-то критериям дня, которое просто происходит. Вот почему мне нужно рассчитать его за каждый час, а не только в конце времени.
Вся проблема в том, что я должен выбрать 5 лучших дней с наименьшим числом (наименее соответствующим). Таким образом, в матрице это означает выбрать 5 самых низких чисел в строке и запомнить индексы столбцов, где находится минимум. (Мне нужно знать, в какой день это произошло). Потому что каждый раз, когда время идет, может быть 5 разных дней, поэтому сортировка всей таблицы приведет к беспорядку.
Я могу заставить его работать очень уродливо, взяв первое 5 число, а затем, когда я найду меньшее по пути, я забуду самый большой из 5 и запомню индекс столбца для нового. Тем не менее, это решение кажется довольно небрежным. В Matlab должен быть лучший способ решить эту проблему.
Любые идеи, функции, которые могут сделать мою жизнь проще?
1 1 0 1 1 1 0 0 1 1
1 2 1 2 2 1 0 1 2 2
Например, в этих двух строках, проиндексированных от 1 до 10, в первой строке он должен возвращать столбцы 3,7,8 и два других, на самом деле не заботясь о том, какой из них. Во второй строке он должен вернуть столбцы 7,8,6,1,3.