Пытаясь понять, как манипулировать двумя матрицами, имеющими следующие элементы (я попытаюсь упростить свою проблему, чтобы было легче ответить), расширив мой предыдущий вопрос:
Первая матрица:
8 2 5
Mat1 = [ 3 7 8 ]
6 5 0
Вторая матрица:
Value(Mat1(1)) Value(Mat1(4)) Value(Mat1(7))
Mat2 = [ Value(Mat1(2)) Value(Mat1(5)) Value(Mat1(8)) ]
Value(Mat1(3)) Value(Mat1(6)) Value(Mat1(9))
Предположим, что значения второй матрицы:
18 22 47
Val.Mat2 = [ 28 84 82 ]
56 65 0
Теперь мы суммируем значения Val.Mat2: VM2CS = cumsum(sort(Val.Mat2))
и устанавливаем ограничение суммирования для каждого столбца cstr = 100;
с результатами ограничения, собранными в матрице: result = sum(VM2CS <= cnstrn);
18 22 0
VM2CS = 46 87 47
102 171 129
result = 2 2 2
######################## ПРОБЛЕМА (два аспекта с возрастающей сложностью) #################
- Аспект первый: как cumsum может игнорировать элементы нуля (0); Итак, результат:
result = 2 2 1
. Я пробовал:result = sum(cumsum(sort(VM2CS))<=cstr ~=0)
безуспешно. - Аспект второй: элементы
Mat1
повторяются в матрицеMat2
(например, элемент Mat1(1) такой же, как Mat1(8) с другим значением, 18 и 82 соответственно. Mat1(6) и Mat1(7) тоже повторяются.). Как я могу использовать только один и тот же элемент в конечном результате с точки зрения того, чтобы иметь как можно больше уникальных элементов в строке (с исключением нуля (0))? Ожидаемый результат должен быть:
18 22 47 result_expected = [ 28 54 0 ] 0 0 0
Я знаю, что на второй аспект нелегко ответить, но указание на решение также должно быть полезным. Те же полезные примеры были предложены профессором Thomas G. Robertazzi. на Планирование телекоммуникационных сетей, но я не У меня сейчас нет этой книги, и я не могу позволить себе купить ее.