Моделирование сигнала датчика

Идеальная модель датчика представляет собой синусоидальный сигнал.

Приближенная к реальности модель соответственно синусоидальный сигнал плюс шум.

Т.е. фактически график синуса описывается формулой:

f(x) = A sin (ωt) + D,

где A - амплитуда колебаний, ω - угловая скорость вращения, D - шумовая составляющая.

Пример генерации шума:

Для выполнения данной задачи сначала создадим новый экземпляр класса Random:

Random rnd = new Random();

Теперь для того чтобы получить случайное число, достаточно использовать созданный экземпляр класса, вызывая метод Next();

// генерируем случайное число от 1 до 3

int random_talk = rnd.Next(1, 4);

Применение графики

Пространство имен System.Drawing обеспечивает доступ к функциональным возможностям графического интерфейса GDI+ Windows. Класс Graphics предоставляет методы рисования на устройстве отображения.

Рассмотрим пример использования графических возможностей С# для метода DrawLine класса Graphics .

Задача: На форме, в модуле pictureBox построить треугольник, заданный прямоугольными координатами вершин. Координаты должны быть заданы относительно pictureBox.

Рисование в pictureBox имеет то преимущество, что при сворачивании формы прорисованные объекты сохраняются. Если же рисовать непосредственно в поле формы, то этого не происходит.

1. Создадим новый проект Windows Form

2. Поместим на форме два контролла из панели инструментов: кнопку Button1 и окно для рисунка pictureBox1. Начальное положение и размеры этих объектов могут быть произвольными, далее программно мы их скорректируем.

3. Создадим в нашем коде функцию загрузки формы, для этого в конструкторе формы дважды щелкнем мышкой на поле формы – создастся процедура private void Form1_Load(object sender, System.EventArgs e)

4. Создадим в нашем коде функцию- события одного щелчка по кнопке Button1, для этого в конструкторе формы дважды щелкнем мышкой на этой кнопке – создастся процедура private void button1_Click(object sender, EventArgs e).

5. Создадим в нашем коде функцию- события рисования pictureBox1, для этого в конструкторе формы правой кнопкой мышки щелкнем на pictureBox1 и выберем «Свойства». В свойства pictureBox1 выберм вкладку «События» и выберм событие Paint, дважды щелкнем мышкой на этом элементе списка – создастся процедура private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

6. Далее дописываем код, как показано ниже.

7. Ключевой строчкой в коде является: pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);

8. Она связывает событие рисования на pictureBox1 с процедурой pictureBox1_Paint.

9. Запускаем проект на выполнение и кликаем по кнопке «Построить».

Пример программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

// Пространство имен для графики, эта строчка вставляется автоматически при создании проекта.

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

float[] x = { 100.78F, 50.12F, 200.99F }; // Массив х-кординат треугольника

float[] y = { 100.45F, 200.77F, 300.18F }; // Массив y-кординат треугольника

private void Form1_Load(object sender, System.EventArgs e)

{

// Задаем размер нашей формы

this.Height = 700;

this.Width = 900;

// Задаем положение pictureBox1, координаты левого верхнего угла относительно формы

this.pictureBox1.Location = new System.Drawing.Point(40, 40);

// Задаем размер pictureBox1

this.pictureBox1.Width = 600;

this.pictureBox1.Height = 500;

// Помещаем кнопку button1 в нижний правый угол формы

this.button1.Left = this.Width - this.button1.Width - 10;

this.button1.Top = this.Height - this.button1.Height-40;

this.button1.Text = "Построить";

}

private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

// Создаем локальную версию графического объекта для PictureBox

Graphics g = e.Graphics;

// Прорисовка отрезков сторон треугольника

g.DrawLine(Pens.Red, x[0], y[0], x[1], y[1]);

g.DrawLine(Pens.Red, x[1], y[1], x[2], y[2]);

g.DrawLine(Pens.Red, x[0], y[0], x[2], y[2]);

}

private void button1_Click(object sender, EventArgs e)

{

pictureBox1.BackColor = Color.White;

pictureBox1.Visible = true;

// Connect the Paint event of the PictureBox to the event handler method.

pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);

}

}

}