green_fr (green_fr) wrote,
green_fr
green_fr

Category:

Сумма в матрице

Есть задача.
Предположим, у нас есть некий вектор X (для читабельности все картинки ниже), нам нужно просуммировать элементы вектора таким образом, чтобы получился новый вектор Sx. Делается это просто, надо умножить X на треугольную матрицу:
          

Если X — квадратная матрица, но с помощью той же треугольной матрицы мы суммируем содержимое каждой колонки.

А теперь, собственно, задача: предположим, нам нужно суммировать содержимое квадратной матрицы не по колонкам, а по диагоналям. То есть элементы новой матрицы должны быть следующего вида:


Задача скорее программистская, чем математическая, то есть мне не обязательно получить красивую формулу, главное, чтобы MatLab её считал быстро. В настоящее время я вынужден использовать написанную мною функцию shift, которая преобразовывает матрицу NxN в матрицу 2N-1xN, сдвигая колонки таким образом, чтобы суммируемые элементы находились в одной строке (лишние элементы в углах новой матрицы заполняются нулями). Затем я суммирую строки и вызываю unshift, которая возвращает матрице квадратную форму, отбрасывая ненужные элементы по уголкам.

P.S. Как ни странно, тупой вариант с двумя вложенными циклами тормозит жутко. Мой вариант в shift/unshift работает на 2-3 порядка быстрее. Но матрицы всё равно большие. Да и вообще, код некрасивый.
Tags: rabota
Subscribe

  • Клаус Барби, Лионский палач

    Ехали мимо Лиона, у дороги стоит очередной туристический указатель: Les enfants d’Izieu. Нам это словосочетание ни о чём не говорило, полезли…

  • Подсчёт голосов на выборах

    Вчера у нас были выборы, сразу на уровне департамента и региона. Я сходил проголосовать (Анюта в Германии, доверенностью мы не занялись), на месте…

  • Демография Франции 2020 года

    Был вчера на работе, за обедом разговорились о рождаемости: у коллеги летом будет ребёнок, он ищет место в яслях, надеется, что спад рождаемости…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments

  • Клаус Барби, Лионский палач

    Ехали мимо Лиона, у дороги стоит очередной туристический указатель: Les enfants d’Izieu. Нам это словосочетание ни о чём не говорило, полезли…

  • Подсчёт голосов на выборах

    Вчера у нас были выборы, сразу на уровне департамента и региона. Я сходил проголосовать (Анюта в Германии, доверенностью мы не занялись), на месте…

  • Демография Франции 2020 года

    Был вчера на работе, за обедом разговорились о рождаемости: у коллеги летом будет ребёнок, он ищет место в яслях, надеется, что спад рождаемости…