• Регистрация
BadBishopGoodRook
BadBishopGoodRook0.00
н/д
  • Написать
  • Подписаться

Откуда это всё берётся?

Уважаемые друзья! Прошу рассмотреть следующую модель:

Во входном файле вектор с отметками по времени с dt = 0.05 c, и соответствующие данные :

x_in = [0 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0];

Модель настроена на дискретный решатель с шагом, равным dt.

В выходном файле должен быть точно такой же массив с такими же отметками времени. Попробуем построить результаты симуляции и исходные данные из .m файла, где и создаётся input.mat:

% input signal, must be a row
x_in = [0 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0];

% construct a time stamp vector with dt = 0.05s
t_in = gen_time(size(x_in, 2), dt);

% save the vectors in the input.mat file where the first row are time
% stamps and the second row are input bits
inputs = [t_in; x_in];

save('input.mat','inputs');
load('output.mat')
hold off
plot(inputs(end,:))
hold on
plot(ans(end,:)) // output array in output.mat file

Видим непонятное расхождение. Попробуем изменить dt на бОльшую величину, скажем, dt = 0.075 c:

Полное совпадение. 

Вопрос возникает - почему? Откуда берётся какой-то дополнительный элемент в массиве, который сдвигает все последующие элементы на один вправо? 

Спасибо заранее!

Теги

    26.01.2021

    Ответы

    • aBoomest
      aBoomest+436.31
      27.01.2021 14:14

      Модель не выкладывали?

      • BadBishopGoodRook
        BadBishopGoodRook0.00
        27.01.2021 18:02

        Запускайте init.m

        • aBoomest
          aBoomest+436.31
          27.01.2021 23:31

          Говорит ошибка архива.
          7z тоже.

          • BadBishopGoodRook
            BadBishopGoodRook0.00
            28.01.2021 09:17

            Странно, у меня без ошибок.

            Вот ссылка на гугл диск

            https://drive.google.com/file/d/1wtCHD1NSLfai7PxbPhYOqyEEZeLgDDNr/view?usp=sharing

            • aBoomest
              aBoomest+436.31
              28.01.2021 15:13

              См. картинку. Вроде все нормально. Чето честно говоря до конца не понял почему так, если коллеги подскажут, то хорошо.

              • BadBishopGoodRook
                BadBishopGoodRook0.00
                28.01.2021 15:23

                да, действительно, с линейной интерполяцией работает корректно, однако, заметьте, вместо нулей появляются числа вроде 1.11е-15, что не верно в том случае, если функция должна принимать boolean - в таком случае всё, что не 0, то превращается в 1. настройка zero-order hold помогает этого избежать, однако, появляется описанная в этом вопросе проблема. которая, впрочем, решается увеличением шага по времени, хотя вопрос не снимается :)

                • aBoomest
                  aBoomest+436.31
                  28.01.2021 16:53

                  Занятно, что внутри файла самого все корректно.

                  Изменения настроек самой модели тоже как-то не помогли. Странно.

                  А не пробовали сперва грузануть в скрипте а потм FromWorkspase?

                  • BadBishopGoodRook
                    BadBishopGoodRook0.00
                    4.02.2021 12:32

                    не понял, что Вы имеете в виду "грузануть в скрипте"?