|
 577.7 Кб |
|
| Имеется "квадратный" двумерный массив
где:
$i - имена неких параметов, каждое из которых задано в виде целого числа.
$ii - имена этих же параметров, заданные аналогичным образом.
При этом в элементе $n_rez[$i][$ii] записано числовое соотношение между свойствами параметра с именем $i и параметра с именем $ii. Естественно, что для $i = $ii значения отсутствуют, а $n_rez[$i][$ii] = $n_rez[$ii][$i].
Пример в Приложении.
Вертикально синим отмечено $i , горизонтально сиреневым отмечено $ii
Из этой таблицы нужно выбрать все параметры (горизонтальные строки), для которых максимальное значение меньше заданного (например, меньше 60).
Для приведенного примера таких параметров нет совсем, т.е выбирать нечего.
Что бы такая выборка получилась, можно удалять из рассмотрения любые параметры. Например, если удалить параметры с именами 4, 7, 10, 13 и 16, то строка 1 подойдет под критерий выборки. Если удалить параметры с именами 5, 8, 111, 14 и 17, то под этот критерий подойдет и строка 2.
Как осуществить такую выборку? И что бы количество оставшихся параметров было максимальным. | |
|
|
|
|
|
|
|
для: Владимир55
(14.10.2009 в 17:31)
| | >Из этой таблицы нужно выбрать все параметры (горизонтальные строки), для которых
>максимальное значение меньше заданного (например, меньше 60).
Ммм... ну чтобы упростить задачу, лучше ввести функцию checkrow(), которая бы принимала строку и органичитель checkrow($n_rez[$i], 60), а возвращала бы true или false в зависимости от того, удобвлетворяет строка условию или нет. Задача сразу упростится и сведется к поиску значений в одномерном массиве.
>Что бы такая выборка получилась, можно удалять из рассмотрения любые параметры.
>Например, если удалить параметры с именами 4, 7, 10, 13 и 16, то строка 1 подойдет под
>критерий выборки. Если удалить параметры с именами 5, 8, 111, 14 и 17, то под этот
>критерий подойдет и строка 2.
Т.е. нужно выкидывать параметры? Или матрица всегда статична? | |
|
|
|
|
|
|
|
для: cheops
(16.10.2009 в 13:27)
| | С checkrow ясно, это упрощает дело.
"Т.е. нужно выкидывать параметры? Или матрица всегда статична?"
Тут так получается (я не ожидал такого результата моделирования, когда затевал всю эту работу), что ВСЕ строки оказываются бракованными, то есть каждая строка содержит числа, большие допустимых. Просто эти числа разбросаны хаотичным образом и это сразу не бросается в глаза. Но если посмотреть повнимательнее на картинку, то так оно и есть. Может, при дальнейших исследованиях процесса, ради которого создается программа, ситуация будет получше, но пока что так.
Поэтому в данный момент сделать выборку из матрицы, не изменяя ее, невозможно - нечего выбирать. В связи с этим возникает необходимость (и возможность) выкидывать параметры. Только желательно делать этот по такому алгоритму, что бы осталось как можно больше.
Тут ведь не безразлично, в каком порядке (с какого элемента) начать усечение матрицы! | |
|
|
|
|
|
|
|
для: Владимир55
(16.10.2009 в 13:56)
| | Боюсь, что без знания модели тут сложно что-то предложить. По разному поступают в таких случаях - сглаживают, назначают штрафные функции... но в любом случае это нужно от задачи плясать, иначе сложно что-то более конкретное предложить. | |
|
|
|