Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Лекция 6. Анализ и синтез информационных систем. 5 страница




if(x *x+y * y<r *r)

if((xl <x) & &(i<x2) && (y2<y)&&(y<yl)) prmtf("\n №3");

else

printf("\ii№2");

else

printf("Vn №1"); } /* Конец программы Л/

Рис, 1.5. Блок-схема программы определения попадания точки в области Оглавление

Лабораторная работа №1. Программирование в MatLab.... 68

Первое знакомство с MATLAB................................................ 72

Типы данных MATLAB............................................................ 72

Массивы.................................................................................. 72

Локальные и глобальные переменные................................... 72

Простейшие действия над матрицами...................................... 73

Присвоение значений матрице............................................... 73

Создание матриц специального вида.................................... 73

Доступ к ячейкам матрицы.................................................. 74

Простейшие действия над матрицами................................. 74

Произведение матриц.......................................................... 74

Присвоение матрице математического выражения.............. 74

Графические средства представления результатов................. 75

Вывод одного графика........................................................... 75

Вывод нескольких графиков.................................................. 75

Графический метод решения уравнений............................... 75

Поиск решения уравнения........................................................ 75

Трехмерные графики................................................................ 76

Элементы программирования в пакете MATLAB.................. 77

Проверка условия.................................................................. 77

Ввод с клавиатуры................................................................. 77

Задание на практику................................................................. 78

Лабораторная работа №3. Программирование в MatLab

Цикл с извест ным количест вом повт орений

MatLAB предоставляет пользователю два способа организации цикла. Первый из них цикл с известным количеством повторений. Блок-схема этого цикла представлена на рис. 1.5.

Рис. 1.5. Блок-схема цикла for

 

Формат оператора:

for переменная = начальное значение: [шаг:] конечное значение

операторы end

Поле шаг в конструкции оператора не является обязательным. Например: for 1=1: 100

x(i) = sin(2*PI*i /100); end

Допустимо задание переменной цикла в виде вектора: for i= [1 2 4 8 16 32]

x(i) = sin(2*PI*i /100); end

Тело цикла обязательно заканчивается служебным словом end.

При работе с циклом for допустимо использование оператора прерывания цикла break. При выполнении оператора break работа цикла завершается и управление передается на следующий после конца цикла оператор. Блок-схема иллюстрирующий использование оператора break приведена на рис. 1.5.


Рис. 1.5. Иллюстрация использования оператора break

 

Текст программы соответствующий рис. 1.5. for i=l: 100 операторы if a(i) == 0

break

end

операторы end

Цикл с неизвест ным количест вом повт орений

Кроме цикла for в программировании на MatLAB используется цикл while. В отличие от цикла for в структуре цикла while не предусмотрены элементы для изменения переменной, по которой организован цикл. Эти элементы должен предусмотреть сам пользователь в операторах цикла.


 

Формат оператора цикла с неизвестным количеством повторений: while условие операторы end

Тело цикла обязательно заканчивается служебным словом end. Например, программа определения точности вычислений: а=1;

while а+1!= 1

а=а/2; end а

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

Создание собст венных функций

Шаблон описания функции в MatLAB выглядит следующим образом:

function результат = имя { аргументы)

операторы

Первая строчка является обязательной, указывающий что это функциональный М файл. После нее располагаются операторы - тело функции.

Имя функции обязательно должно совпадать с именем файла в котором она размещается. Правила на задание имен функций такие же как и на имена переменных. Аргументы - это то что передается в функцию в качестве параметров. Результат - то что будет возвращено из функции в вышестоящею программу или в рабочею область самого MatLAB. Если возвращается одна переменная (массив) то указывается ее имя. Пример:

function y=minf(x, n)

y=x(i);

for i=l:n if x(i)<y

y=x(i);

end end

Последнее значение, присвоенное переменой результата у будет передано в вышестоящую программу или в рабочею область самого MatLAB.

Если из функции необходимо вернуть несколько значений (или массивов), то они перечисляются в прямоугольных скобках, function [у, k]=minf(x, п)

у=х(1); k=l;

for i=l:n if x(i)<y

y=x(i); k=i;

end end

Отдельным вопросом при использовании функций являются S функции - фактически являющиеся программами на языке MATLAB. От обычной функции их отличают отсутствие строки описания fimction. Созданные в них переменные являются глобальными для модуля вызвавшего соответствующую S функцию.

Задание на лаборат орную работ у

Необходимо написать программу в MatLab. При этом для операций с матрицами не допускается использование стандартных функций.

В качестве подготовки к лабораторной работе необходимо составить алгоритм

программы в виде блок-схемы. Оглавление

Лабораторная работа №2. Программирование в MatLab 79

Цикл с известным количеством повторений................... 79

Цикл с неизвестным количеством повторений............... 80

Создание собственных функций...................................... 81

Задание на лабораторную работу.................................. 81

Лаборат орная работ а №4. Программирование в MatLab

Теоретическая часть

1. Цикл с извест ным количест вом повт орений

MatLAB предоставляет пользователю два способа организации цикла. Первый из них цикл с известным количеством повторений. Блок-схема этого цикла представлена на рис.1.1.


 

Рис. 1.1. Блок-схема цикла for Формат оператора:

for переменная = начальное значение: [шаг:] конечное значение

операторы

end

Поле шаг в конструкции оператора не является обязательным. Например:

for i=l: 100

x(i) = sin(2*PI*i/100);

end

Допустимо задание переменной цикла в виде вектора: for i= [1 2 4 8 16 32] x(i) = sin(2*PI*i /100); end

Тело цикла обязательно заканчивается служебным словом end.

При работе с циклом for допустимо использование оператора прерывания цикла break. При выполнении оператора break работа цикла завершается и управление передается на

следующий после конца цикла оператор. Блок-схема иллюстрирующий использование оператора break приведена на рис, 1.2.


 

Рис, 1.2. Иллюстрация использования оператора break

Текст программы соответствующий рис, 1.2. for 1=1:100 операторы ifa(i) ==0

break

end

операторы end

2. Цикл с неизвест ным количест вом повт о рений

Кроме цикла for в программировании на MatLAB используется цикл while. В отличие от цикла for в структуре цикла while не предусмотрены элементы для изменения переменной, по которой организован цикл. Эти элементы должен предусмотреть сам пользователь в операторах цикла.

Блок-схема цикла представлена на рис,2.1.


------------------------------------------------------------------

Рис, 2.1. Блок-схема цикла while

Формат оператора цикла с неизвестным количеством повторений:

while условие

операторы

end

Тело цикла обязательно заканчивается служебным словом end. Например, программа определения точности вычислений: а=1;

while а+1!= 1

а=а/2; end а

Последняя строчка программы выведет на экран значение переменной а. 3. Создание собст венных функций

Шаблон описания функции в MatLAB выглядит следующим образом:

function результат = имя (аргументы)

операторы

Первая строчка является обязательной, указывающий что это функциональный М файл. После нее располагаются операторы - тело функции.

Имя функции обязательно должно совпадать с именем файла в котором она размещается. Правила на задание имен функций такие же как и на имена переменных. Аргументы - это то что передается в функцию в качестве параметров. Результат - то что будет возвращено из функции в вышестоящею программу или в рабочею область самого MatLAB. Если возвращается одна переменная (массив) то указывается ее имя. Пример:

function y=minf(x, n)

y=x(i);

for i=l:n if x(i)<y

y=x(i);

end end

Последнее значение, присвоенное переменой результата у будет передано в вышестоящую программу или в рабочею область самого MatLAB.

Если из функции необходимо вернуть несколько значений (или массивов), то они перечисляются в прямоутольных скобках, function [у, k]=minf(x, п)

y=x(i); k=l;


for i=l:n if x(i)<y

y=x(i); k=i;

end end

Отдельным вопросом при использовании функций являются S функции - фактически являющиеся программами на языке MATLAB. От обычной функции их отличают отсутствие строки описания liinction. Созданные в них переменные являются глобальными для модуля вызвавшего соответствующую S функцию.

Задание на лабораторную работу

Необходимо написать программу в MatLab. При этом для операций с матрицами не допускается использование стандартных функций. Вариант задания выбирается в соответствии с порядковым номером по списку группы, причем группы с нечетными номерами начинают отсчет вариантов с конца списка заданий.

В качестве подготовки к лабораторной работе необходимо составить алгоритм программы в виде блок-схемы.

1. Создать двухмерный массив из случайных чисел размера М на М. Поменять местами соответствующие элементы главной и побочной диагоналей..

2. В двухмерном массиве из случайных чисел размера М на М. Заменять столбец п на столбец т, где n, т вводятся с клавиатуры.

3. В сгенерированной матрице размера М на N найти максимальный и минимальный элементы, вывести их местонахождение.

4. Создать двухмерный массив из случайных чисел размера М на N, в котором нечетные столбцы отсортировать по возрастанию, а четные по убыванию.

5. В квадратной матрице из случайных чисел размера М на N и повернуть полученную матрицу на 90 градусов по часовой стрелке.

6. В квадратной матрице из случайных чисел размера М на N и повернуть полученную матрицу относительно главной диагонали.

7. В квадратной матрице из случайных чисел размера М на N и повернуть полученную матрицу относительно побочной диагонали.

8. Сгенерировать двухмерный массив размера N на N. Переписать этот массив в строку по возрастанию.

9. Создать массив из случайных чисел от 1 до 100 размера М на N. Прибавить к каждому элементу число 3 и посчитать сумму элементов матрицы, находящихся в нечетных столбцах. Создать вектор четные элементы, которого состоят из сумм соответствующих элементов строк, а нечетные произведение.

10. Создать двухмерный массив размера М на N из случайных чисел, в котором элементы в нечетных строках отсортировать по убыванию, а в четных по возрастанию. Вывести на экран суммы элементов четных и нечетных столбцов.

11. Создать матрицу из 7 номеров телефонов Ваших друзей, после чего отсортировать по возрастанию. Поменять первую и последнюю строки местами. Сложить номера телефонов, поделить на их количество и вывести на экран получившийся номер.

12. Сгенерировать матрицу М на N случайных неповторяющихся элементов от 0 до 300. Вывести на экран, отсортировать по убыванию элементов. Число М и N задается с клавиатуры.

13. Сгенерировать матрицу 10 на 10 из случайных чисел и рассчитать среднее отклонение от средней величины, отдельно для положительных, отдельно для отрицательных отклонений и по абсолютному значению отклонений.

14. Сгенерировать матрицу 10 на 10 и посчитать сумму элементов первого столбца, умноженную на сумму элементов первой строки.

15. Умножить одну матрицу размером М на N на другую размером N на М, не прибегая к стандартным способам в Matlab.

16. В сгенерированном двухмерном массиве размера М на N из случайных чисел. С клавиатуры ввести координаты элементов которые нужно поменять местами.

17. В сгенерированном двухмерном массиве размера М на N, где М и N вводятся с клавиатуры, найти максимальный и минимальный элементы, вывести их местонахождение. Посчитать среднюю величину и сумму всех элементов.

18. Сгенерировать матрицу М>5 на N>5 из случайных чисел. Поменять вторую строку и пятый столбец местами, после чего поделить эту матрицу на произвольное число не равное 0 и посчитать сумму элементов матрицы, находящихся в четных столбцах. Посчитать определитель этой матрицы.

19. Осуществить сложение двух случайных матриц, не пользуясь стандартными способами в Matlab.

20. Ввести две строки чисел и сосчитать, сколько повторяющихся элементов находится в каждой строке по отдельности и сколько таких элементов в этих двух строках.

21. Сгенерировать матрицу М на N. Создать вектор, состоящий из элементов главной диагонали.

22. Создать двухмерный массив размера М на М (где М нечетное число). Значению центрального элемента присвоить значение 0. Отсортировать главную и побочную диагонали по возрастанию к краям от центрального элемента, находящегося на пересечении этих диагоналей. Число М задается с клавиатуры.

23. Создать двухмерный массив размера М на М. Вычислить определитель, после чего прибавить его к сумме всех элементов массива. Вывести на экран исходный массив и ответ, получившийся после арифметических операций.

24. Сгенерировать четыре двухмерных массива и отсортировать их по возрастанию величины определителя. Вывести на экран.

25. Создать двухмерный массив. Умножить его элементы на Ваш возраст, сосчитать определитель.

26. Сгенерировать двухмерный массив из отрицательных элементов. Сосчитать сумму элементов главной диагонали, умноженную на сумму элементов побочной диагонали, исключая элемент пересечения диагоналей.

27. Сгенерировать массив размером 20 на 20 из чисел от 0 до 15. Сосчитать количество повторений каждого символа.

28. Создать массив размером М на М, где М нечетное число и заполнить его следующим образом: от левого верхнего утла к правому нижнему углу так, чтобы первый элемент был случайным числом, а последующие получались в результате прибавления 1 к предыдущему элементу.

29. Создать массив G случайных чисел размера М на М. Сформировать массив F строки которого будут состоять из элементов диагоналей массива G.

30. Создать массив размером М на N и заполнить его простыми числами т.е. числами, которые делятся только на 1 и на себя.

31. Создать вектор из случайных чисел. Рассчитать сколько элементов больше и сколько меньше числа введенного с клавиатуры.

Лабораторная работа №5

ДИСКРЕТИЗАЦИЯ НЕПРЕРЫВНЫХ СИГНАЛОВ ВО ВРЕМЕНИ

ЦЕЛЬ РАБОТЫ: экспериментальное изучение процесса дискретизации и восстановление непрерывных сигналов.

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

В технике связи часто приходится иметь дело с непрерывными сигналами. Так обстоит дело, например, при передачи звука или изображения. При передачи звука на выходе микрофона получается непрерывно изменяющийся электрический сигнал, воспроизводящий звуковое давление. Аналогичного вида сигнал получается и при передачи изображений в фототелеграфии и телевидении.

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

спектра сосредоточена в ограниченной полосе частот - ^и). Для сигналов с ограниченным спетром справедлива теорема Котельникова:

с

Сигнал, описываемый непрерывной функцией времени ^'с ограниченным спект ром, полност ью определяет ся своими значениями, от счит анными через инт ервалы времени

&=lf(2AfJ if

s \ ^ Где _ ШИрИна спект pa сигнала.

Смысл теоремы Котельникова состоит в том, что если требуется передавать сигнал, описываемый функцией с ограниченным спектром, то достаточно передавать отдельные

Л =1/(2^)

мнгновенные значения его, отсчитанные через конечный промежуток времени f v ^ т *

xU)

Представление непрерывного (аналогового) сигнала v / дискретной последовательностью

отсчетов ^ по КООТОрЫМ с заданной точностью можно восстановить исходный

непрерывный сигнал, называется дискретизацией (рис. 1).


Рис, 1. Дискретизация сигнала v

Процесс восстановления дискретизированного сигнала называется интерполяцией. В соответствии с теорией интерполяционная формула имеет вид

■w-i-i-i^s?

и носит название ряда Котельникова.

Для доказательства теоремы Котельникова используем обратное преобразование Фурье

функции, спектр которой отличен от нуля в полосе частот от 0 до ~

j

= — Г (2)

В момент времени * ~ ~ значение функции ^^ определяется выражением

Ц&Д*) = — Г (3)

С друтой стороны, функция на интервале от до также может быть

представлена при помощи ряда Фурье (путем ее периодического продолжения с периодом

=i JCkacp{jakx/QJ (4)

* о

f

где комплексные коэффициенты *, как обычно определяют по формуле

С* =?гГ— fӘ[/w)eacji[-./taft*/)db> (5)

Из сравнения формул (3) и (5) следует, что

Ck-^-x[kӘt)-Lx[-k/2Fa) (6)

С jcfj^

Таким образом, коэффициенты * определяются значениями функции wb дискретные

моменты времени * = ЙД/. Но коэффициенты полностью определяют функцию ^С-^) ? которая в свою очередь, является спектральной характеристикой (частотным

представлением) функции Л *. Следовательно, функция v / полностью определяется

своими дискретными значениями v 1, где ; v, что и требовалось доказать.

Чтобы получить ряд Котельникова (1), заменим в выражении (2) спектральную плотность разложением в ряд Фурье (4), в результате будем иметь

лс[*) = — Г exp[jwt)^C kexp[jwkx f 4 ТС: &

Заменим * его значением (6) и вычислим интеграл

[t + ш)

Так как суммирование производится по положительным и отрицательным значениям &, можно изменить знак перед Л на обратный. Окончательно получим

sin QK - к At)

что совпадает с формулой (1). Графики функций А/и) показаны на рИС 2.

Рассматривая семейство этих функций, соответствующих различным значениям, видим, что в каждый момент времени только одна функция равна 1, а все остальные равны нулю.


ш Qm -

Рис, 2. Семейство функций ^

xU)

Разложение (1) указывает технический способ предачи функции w с ограниченным спектром и восстановления ее на приемном конце.

1. Берутся отсчеты функции в момент времени 'я ~ ^^.

2. Полученные числа любым способом, например в виде амплитуд импульсов (АИМ - система связи) или двоичных кодовых комбинаций (ИКМ - система связи), передаются по каналу связи.

3. На приемной стороне вырабатываются короткие импульсы, амплитуды которых пропорциональны принимаемым отсчетам.

4. Эти импульсы подаются на вход идеального ФНЧ с полосой пропускания от 0 до.

JC М

На выходе фильтра получается функция, соответствующая переданной функции Идеальныый ФНЧ с граничной частотой ~~ при действии на его входе единичного

дельта - импульса "^'дает на выходе напряжение, соответствующее функции It 1

Q

(7)

И

При восстановлении функции на вход фильтра через интервалы А* подаются короткие

импульсы с амплитудами, соответствующими отсчетам Х. На выходе фильтра

получается напряжение, соответствующее сумме откликов фильтра на каждый из импульсов.

x(t)

В моменты времени функции ^ ' восстанавливает совершенно точно независимо от числа отсчетов, так как при этом только одна функция

1 > ая[*-*А)

максимальна и отлична от нуля. В остальные моменты времени для точного восстановления jc(t)

v * будет суммироваться бесконечное число функций, так как значение каждой из них отлично от нуля.

А(и) =

Отметим, что амплитудно - частотная характеристика (АЧХ) идеального ФНЧ имеет прямоугольную форму

Aq при (о < fi,

(8)

О при <о > }

а фазовая характеристика линейна
</>(cl>) = 7ш

Импульсная реакция фильтра связана преобразованием Фурье с комплексным

К(лш)

коэффициентом передачи 1 ' * 1 L 11 'J;

1 " / ™ ю ,?(z) = — jK[ja)}exp[ja>tyia) = — = — jA0exp^-jTro)ex^ja>tyi(o =

Q - И1

-^ifcfhr

что с точностью до постоянного множителя '' х соответствует членам ряда (1). Сдвиг

максимума % отнсительно момента подачи входного дельта - импульса определяется

наклоном фазовой характеристики. Идеальный фильтр имеет бесконечный наклон фазовой

характеристики, поэтому максимум ^^ должен наблюдаться при 1 —^ т. Это согласуется с тем фактом, что приближением к идеальному ФНЧ является бесконечно большое число последовательно соединенных реальных ФНЧ.

jc М

На практике восстановленная функция ', как правило, не совпадает точно с

x(t)

передаваемой функцией v '. Ошибка (погрешность) восстановления равна

= s(*) = (11)

Эта ошибка обусловлена следующими причинами:

х(г)

1) Спектр передаваемой функции v / обычно ограничен не резко. Это вытекает хотя бы из того факта, что все реальные сигналы ограничены во времени и, следовательно, имеют неограниченные строго спектры. Выбор интервалов отсчетов & * 0 означает, что все

спектральные составляющие спектра с частотами ^ ~ х Аг передаются и не могут быть восстановлены приемником.

(9)

2) Если сигнал ж^ имеет неограниченный спектр у то спектр отечетных импульсов ^ имеет вид, показанный на рис. 3. (Спектр коротких импульсов, модулированных по амплитуде функцией


-%п ш 3-я

 

 

0.7

 

Рис, 3. Спектр передаваемой функции и спектр отсчетных импульсов

В полосу пропускания фильтра с частотой среза попадает часть энергии

ш

спектральных составляющих импульсов отсчетов, сосредоточенных вокруг частот Это приводит к увеличению ошибки восстановления, так как искажается форма огибающей спектра сигнала.

Характер искажений восстановленной функции на выходе фильтра отчетливо проявляется,

если передаваемый сигнал ^^ имеет синусоидальную форму частоты ^. Пусть, например,

частота следования отсчетных импульсов равна. Если при этом частота

синусоидального сигнала ^ — у то в полосу пропускания фильтра (а, следовательно, и на

(б).

выход), кроме частоты сигнала, попадет также частота ^^с - ~ ~ ^си другие аналогичные комбинационные частоты рис, 4. В результате на выходе фильтра наблюдаются биения гармонических колебаний огибающая биений имеет разностную частоту -2QS = 2(QC -fls)



 

 


 

Рис, 4. а) Частота 20 - Q не попадает на выход фильтра, б) Частота 20~~ Q попадает на выход фильтра (на выходе фильтра наблюдаются биения частот Q и 20 ~ ^)

3). Все реальные фильтры не имеют бесконечной памяти, то есть одновременно суммируют конечное число отсчетов. Это означает, что передаваемый сигнал, даже если он имеет

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

W

JC I С- 1

восстановление непрерывной фкнкции v ' будет соровождаться ошибкой. Восстановление сигнала по конечному числу отсчетов эквивалентно восстановлению в идеальном фильтре сигнала, ограниченного во времени, а такой сигнал имеет неограниченный спектр. Следовательно, как и в пункте 1 ошибка восстановления является следствием потери

составляющих спектра сигнала с частотами ш ^.

4). Импульсная реакция реального фильтра не совпадает с функцией вида и в

моменты времени ^ не равна 0 (рис,5). Отличие тем больше, чем значительнее

реальный фильтр отличается от идеального. Это приводит к тому, что напряжение на выходе

реального фильтра даже в моменты времени ^^ определяется всеми предыдущими отсчетами.

Таким образом, напряжение на выходе реального фильтра при восстановлении сигнала в любой момент времени отличается от напряжения на выходе идеального фильтра, что является причиной


 

СРСП

по дисциплине «Теория информаци» на тему «Программирование в MATLAB»

Задание к СРСП:

tw
к = О

Необходимо написать программу, определяющую в какую область на рисунке, номер

 

которого соответствует вашему варианту, попала точка. На рисунке представлен разрез трехмерного изображения фигур в пространстве (так на рисунке 1 пространство разбито на части сферой, плоскостью и параллелепипедом). Параметры фигур (радиус, длина, ширина, высота и др.) определяются по рисунку (масштаб произвольный), начало координат задается произвольно. Координаты точки (x,y,z), расположение которой определяется в данной работе, вводятся с клавиатуры. Результатом выполнения работы является программа, вычисляющая номер области, в которую попадет точка, написанная в отдельном файле, а также графическое отображение результата (построить графики всех фигур, соответствующих вашему варианту и указать искомую точку).


Пояснительная записка должна содержать: Введение

1. Описание используемого программного продукта

2. Техническое задание

3. Разработка рабочего проекта (словесное описание алгоритма, блок-схема)

4. Листинг программы

5. Описание программы

6. Тестирование программы (рассмотреть все варианты исхода программы и вывести результаты на печать)

Рис. 1
й

Заключение


 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных