boost::numeric::ublas::vector<double> ribi::kalman::StandardWhiteNoiseSystem::Measure() const noexcept { const auto sz = GetCurrentState().size(); assert(GetCurrentState().size() == m_parameters->GetMeasurementNoise().size()); boost::numeric::ublas::vector<double> measured(sz); for (std::size_t i = 0; i!=sz; ++i) { measured(i) = GetRandomNormal(GetCurrentState()(i),m_parameters->GetMeasurementNoise()(i)); } return measured; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { QLocale::setDefault(QLocale::English); //setAttribute(Qt::WA_DeleteOnClose,true); ui->setupUi(this); experimentSettings=new QSettings (QSettings::IniFormat,QSettings::UserScope,QApplication::organizationName(),"experiment",this); experiment=new Experiment(); tcp=new TcpServer(this); tcp->setExperiment(experiment); udp=new UdpServer(this); udp->setExperiment(experiment); connect(tcp,SIGNAL(warning(QString)),SLOT(warning(QString))); connect(tcp,SIGNAL(notify(QString)),SLOT(notify(QString))); //bind tcp socket to local port 25050 tcp->bind(25050); connect(experiment,SIGNAL(statusChanged(bool)),tcp,SLOT(experimentStatusChanged(bool))); connect(experiment,SIGNAL(intervalChanged(int)),tcp,SLOT(experimentIntervalChanged(int))); connect(experiment,SIGNAL(TcpForbidden(QString)),tcp,SLOT(experimentForbidden(QString))); connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(close())); connect(ui->actionFullscreen,SIGNAL(triggered(bool)),this,SLOT(setFullscreen(bool))); connect(ui->actionAbout_Qt,SIGNAL(triggered()),this,SLOT(showAboutQt())); connect(ui->actionNew_experiment,SIGNAL(triggered()),this,SLOT(getExperiment())); connect(ui->actionSave,SIGNAL(triggered()),experiment,SLOT(saveFile())); connect(ui->actionSave_as,SIGNAL(triggered()),this,SLOT(getFile())); connect(ui->actionStartMeasure,SIGNAL(toggled(bool)),experiment,SLOT(start(bool))); connect(ui->actionMeasuring_interval,SIGNAL(triggered()),this,SLOT(changeMeasureIntervalDialog())); connect(ui->actionControls,SIGNAL(triggered()),SLOT(showExperimentControlMangement())); connect(ui->actionData,SIGNAL(triggered()),SLOT(showData())); connect(experiment,SIGNAL(statusChanged(bool)),ui->actionStartMeasure,SLOT(setChecked(bool))); connect(experiment,SIGNAL(statusChanged(bool)),this,SLOT(statusChanged(bool))); connect(experiment,SIGNAL(experimentChanged(QString)),this,SLOT(setExperiment(QString))); connect(experiment,SIGNAL(measured(QString)),ui->plainTextEdit,SLOT(appendPlainText(QString))); connect(experiment,SIGNAL(fileChanged(QString)),this,SLOT(setFile(QString))); connect(experiment,SIGNAL(Notify(QString)),SLOT(notify(QString))); connect(experiment,SIGNAL(intervalChanged(int)),SLOT(setMeasureInterval(int))); connect(experiment,SIGNAL(updateProgress(int)),ui->measureIntervalProgressBar,SLOT(setValue(int))); connect(tcp,SIGNAL(clientCountChanged(int)),&tcpClientsLabel,SLOT(setNum(int))); experiment->setInterval(2000); // Additional ui preparation experimentLabel.setToolTip("Experiment configuration"); statusLabel.setToolTip("Experiment status:\nR - running\nS - stopped"); QFont font(statusLabel.font()); font.setBold(true); statusLabel.setFont(font); //set experiment status to stopped statusChanged(false); tcpClientsLabel.setToolTip("Number of tcp clients"); tcpClientsLabel.setNum(0); statusBar()->addPermanentWidget(&tcpClientsLabel); statusBar()->addPermanentWidget(&fileLabel); statusBar()->addPermanentWidget(&experimentLabel); statusBar()->addPermanentWidget(&statusLabel); // Ask user to select experiment getExperiment(); }