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

  • Киев — мелочи

    В октябре 2018 был в Киеве, буквально на один день. Очень люблю этот город, и каждый раз — огромное количество уже непонятных мне деталей :-)…

  • Invalides — À l'Est la guerre sans fin, 1918–1923, part I

    Выставка про то, как делили страны после перемирия 1918 года. Редко когда это происходило мирным путём, откуда и название. Шикарная выставка,…

  • Украинский павильон на Биеннале 2017

    Мне очень нравится эта фраза: наш профком организовал поездку на Биеннале в Венецию :-) Поездка на 4 дня, посреди учебного года; плюс, нельзя…

  • 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

  • Киев — мелочи

    В октябре 2018 был в Киеве, буквально на один день. Очень люблю этот город, и каждый раз — огромное количество уже непонятных мне деталей :-)…

  • Invalides — À l'Est la guerre sans fin, 1918–1923, part I

    Выставка про то, как делили страны после перемирия 1918 года. Редко когда это происходило мирным путём, откуда и название. Шикарная выставка,…

  • Украинский павильон на Биеннале 2017

    Мне очень нравится эта фраза: наш профком организовал поездку на Биеннале в Венецию :-) Поездка на 4 дня, посреди учебного года; плюс, нельзя…