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

  • Суп бурдэ

    Как перевести %subj% на французский? Можно попытаться сказать la soupe Bourdais, но нет. Сижу недавно на собрании, обсуждаем экономические сценарии…

  • «Etonnantes Étymologies» de Jean-Pierre Colignon

    Прочитал книжку — Анечка когда-то подарила — про этимологию некоторых французских слов. Предсказуемо много интересного, неожиданно (но постфактум…

  • Урок французской литературы

    На прошлой неделе Натанкин в школе проходил очередного Виктора Гюго. L’art d’être grand père, часть Grand âge et bas âge mêlés, глава VI —…

  • 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

  • Суп бурдэ

    Как перевести %subj% на французский? Можно попытаться сказать la soupe Bourdais, но нет. Сижу недавно на собрании, обсуждаем экономические сценарии…

  • «Etonnantes Étymologies» de Jean-Pierre Colignon

    Прочитал книжку — Анечка когда-то подарила — про этимологию некоторых французских слов. Предсказуемо много интересного, неожиданно (но постфактум…

  • Урок французской литературы

    На прошлой неделе Натанкин в школе проходил очередного Виктора Гюго. L’art d’être grand père, часть Grand âge et bas âge mêlés, глава VI —…