• Регистрация
Cube
Cube +1.03
н/д

Перевод математической модели в программный код.

11.05.2021

Имеется формула матричного фотоприёмника и необходимо перевести её в программный код для проверки расхождения значений с другими видами математической модели фотоприёмника. Аналитически доказать получилось, что они разные и дают разные значения, а вот с программированием пока беда. Исходя из информации о языке MATLAB предположил, что он должен помочь мне с переводом, но пока что всё идёт тяжело, а время поджимает. Если есть свободный человек, то помогите с моим вопросом, очень сильно прошу. Знак X после I(x,y) обозначает свёртку. Все данные после знака равно известны.

Ответы

  • Cube
    Cube+1.03
    11.05.2021 08:01
    • aBoomest
      aBoomest+942.89
      11.05.2021 08:27

      1. Что означают все остальные ф-ции, дабы не было разночтений?
      2. У вас есть разные виды умножений в формуле? Если да, то тоже стоило уточнить что да как.
      3. Cвертка conv

      • Cube
        Cube+1.03
        11.05.2021 09:28

        rect - прямоугольная функция;
        comb - Ш-функция, она же comb-функция,она  же сумма дельта импульсов(comb(x/dx,y/dy) = Enδ(x-ndx,y-ndy), где En - знак суммы по n от минус до плюс бесконечнсоти. Не нашёл знак суммирования, извините.
        всё, что указано функцией * - обозначает умножение;
        знак X - обозначает свёртку, она же conv, как вы и сказали.

        В прикреплённом уравнении энергия падающего излучения интенсивности I[x,y] падает на прямоугольные пиксели матрицы размером n,m(0<n<=N;0<m<=M) , которые поглощают эту энергию в определённой своей светочувствительной части прямоугольной формы(описывается функцией rect) размером ax, By. Далее интенсивность падающего излучения подвергается дискретизации с помощью умножения на цепочку дельта импульсов(функция comb) и обрезается по размерам матрицы, состоящей из пикселей(последняя функция rect(x/Lx, y/Ly)).

        • aBoomest
          aBoomest+942.89
          11.05.2021 10:46

          rectpuls
          dirac
          остальное вроде сами расписали

          • Cube
            Cube+1.03
            24.05.2021 11:46

             x = 0:0.1:10;
            a = 0.5;
            d_x = 1;
            N = 6;
            I_c = cos(2*pi*x/10);
            m = rectpuls(x/(a*d_x));
            p = conv(I_c, m);
            b = rectpuls(x/(N*d_x));
            syms n;
            u = symsum(n, dirac(x-n*d_x), 0, 6);
            I_s = p*u*b;
            plot(I_s);

            Вышел у меня вот такой вид уравнения в одномерном виде. Тут программа говорит следующее:
            Summation index must be a symbolic variable.

            Полагаю, что ему не нравится как я задал эту самую функцию u, но я пока не понимаю как правильно задать сумму дельта импульсов в подобном виде(прикрепляю ниже). Помогите, пожалуйста.

            • Cube
              Cube+1.03
              25.05.2021 10:38

              Срочно нужна помощь, помогите, пожалуйста.