Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практикум по матлабу.pdf
Скачиваний:
156
Добавлен:
29.03.2015
Размер:
1.19 Mб
Скачать
Рис. 17. Функция отбраковки

D.Моделирование распределения случайных величин

Датчик случайных чисел rand является встроенной функцией системы MATLAB. При каждом обращении возвращает случайное число из равномерного распределения на интервале (0,1).

Легко построить функцию, генерирующую равномерное распределение на произвольном интервале [А,В]:

Х=А+(В-А)*rand.

Пусть нужно получить значения случайной величины Х, распределенной на интервале [А,В] с плотностью f(X) (рис. 17). Выберем прямоугольник АВСD, высота которого Н не меньше максимального значения функции f(X) на [А,В].

Будем набрасывать на прямоугольник точки равномерно по его площади и браковать те из них, которые попадают выше кривой f(X). Значения Х для принятых точек и будут реализовать искомое распределение, т.е получаемые значения X будут распределены на интервале [A,B] с плотностью f(X).

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

.......................

x=A+(B-A)*rand; while (f(x) < H*rand) x=A+(B-A)*rand; end;

.......................

При этом функция f(X) должна быть описана в смысле функции MATLAB. При каждом обращении он будет давать значение X из требуемого распределения. Ясно, что чем больше площадь над кривой f(X), тем реже мы будем браковать точки. Поэтому лучше всего выбрать Н равным максимальному значению f(X). Указанный способ позволяет генерировать и многомерные распределения случайных величин.

91

Еще одна важная задача, возникающая при моделировании угловых распределений, – это реализация равномерного (изотропного) распределения в пространстве. Если задавать направление единичным вектором, выходящим из начала координат, то концы таких векторов расположены на поверхности единичной сферы. Равная вероятность для любого направления означает, что конец вектора – случайная точка Ω, равномерно распределенная на поверхности этой сферы. Вероятность того, что Ω окажется в любом элементе поверхности dS , равна dS/4π. Выбирая на поверхности сферы сферические координаты (θ, ϕ) с полярной осью ОZ, имеем dS = sin θdθdϕ, где 0 ≤ θ ≤ π, 0 ≤ ϕ ≤ 2π. Для получения (розыгрыша) случайного направления нам понадобятся два случайных числа. Соответствующий участок программы имеет вид

.................

C=2.0*rand-1;

Fi=2.0*pi*rand;

.................

Здесь Fi – угол ϕ , а С – косинус угла θ.

В системе MATLAB есть также встроенная функция, задающая нормальное распределение – randn(m,n). Эта функция генерирует матрицу m x n случайных чисел с нормальным распределением. Это распределение имеет нулевое среднее и единичную дисперсию.

92

E. Краткий справочник по функциям MATLAB

Краткий справочник по функциям MATLAB содержит 20 основных групп функций. По команде help осуществляется вывод списка этих групп. По команде help <имя группы> выводится список функций, содержащихся в этой группе. Порядок, в котором приведены далее группы функций, может служить указателем для всего краткого справочника.

Функция

Действие

 

 

 

Группы функций

general

команды общего назначения

ops

операторы и специальные символы

lang

конструкции языка

elmat

элементарные матрицы и действия с матрицами

specmat

специальные матрицы

elfun

элементарные математические функции

specfun

специальные математические функции

matfun

матричные функции - численные методы линейной алгебры

datafun

обработка данных и преобразование Фурье

polyfun

полиномиальные функции и интерполяция

sparfun

работа с разреженными матрицами

plotxy

двумерная графика

plotxyz

трехмерная графика

graphics

графические функции общего назначения

color

управление цветом и освещением

sounds

функции работы со звуком

strfun

функции работы со строковыми переменными

iofun

функции ввода/вывода низкого уровня

demos

демонстрации и примеры

 

 

 

 

 

Клавиши редактирования

(Ctrl+P)

Вызов предыдущей строки

(Ctrl+N)

Вызов следующей строки

 

 

 

Команды общего назначения

 

Управление командами и функциями

demo

запуск демонстрационных примеров

help

онлайновая помощь

lookfor

поиск ключевых слов в помощи

 

 

93

Функция

 

Действие

 

 

 

path

 

исполняемая команда операционной системы

what

 

список M-, MAT-, и MEX-файлов в директории

 

 

 

 

Управление переменными и рабочим пространством

clear

 

очистка переменных и функций в памяти

length

 

длина вектора

load

 

восстановить переменные с диска

save

 

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

size

 

размерность матрицы

who

 

список текущих переменных

whos

 

список текущих переменных, развернутая форма.

 

 

 

 

Работа с файлами и операционной системой

cd

 

сменить текущую рабочую директорию

delete

 

удалить файл

diary

 

сохранить в файле протокол текущей сессии

dir

 

листинг текущей директории

!

 

Выполнять команду DOS

 

 

 

 

 

Управление командным окном

clc

 

Очистить командное окно

echo

 

Печатать выполняемые команды программы

 

 

 

 

 

Запуск и выход из MATLAB’а

quit

 

выйти из MATLAB’а

startup

 

файл, выполняемый при запуске MATLAB’а

 

 

 

 

 

 

Операторы и специальные символы

 

Арифметические и матричные операторы

*

 

умножение матриц

.*

 

поэлементное умножение матриц

ˆ

 

возведение матрицы в степень

 

возведение элементов матрицы в степень

kron

 

тензорное произведение матриц

\

 

левое деление матриц

/

 

правое деление матриц

./

 

поэлементное деление матриц

 

эрмитовское сопряжение

.’

 

транспонирование

 

 

 

 

 

Операторы отношения

94

Функция

 

Действие

 

 

 

>

 

больше

<

 

меньше

>=

 

больше или равно

<=

 

меньше или равно

==

 

равно

˜=

 

не равно

 

 

 

 

 

Логические операторы

&

 

и (AND)

|

 

или (OR)

˜

 

не (NOT)

xor

 

исключающее или (XOR)

 

 

 

 

 

Специальные символы

.

 

десятичная точка

..

 

родительская директория

...

 

продолжение (перенос на следующую строку)

%

 

комментарий

 

 

 

 

 

Логические функции

all

 

истина, если верно для всех элементов матрицы

any

 

истина, если верно хотя бы для одного элемента матрицы

exist

 

проверяет, существует ли переменная или функция

find

 

находит индексы ненулевых элементов

finite

 

истина для конечных элементов

 

 

 

 

 

 

 

 

Языковые конструкции и отладка

 

MATLAB как язык программирования

eval

 

выполнить строку

feval

 

выполнить функцию

function

 

определить функцию

global

 

сделать переменную глобальной

nargchk

 

установить кол-во входных аргументов

 

 

 

 

 

Операторы управления

break

 

выйти из цикла

end

 

конец цикла или условного оператора

error

 

выдать сообщение и прекратить выполнение функции

for

 

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

if,else, elseif

 

условные операторы

 

 

 

95

Функция

Действие

 

 

return

возврат в вызвавшую функцию

while

цикл с неопределенным числом повторений

 

 

 

Интерактивный ввод

input

ожидает ввод пользователя

pause

ожидает нажатия клавиши (или заданное время)

 

 

 

 

 

Матрицы и операции с ними

 

Элементарные матрицы

eye

единичная матрица

linspace

вектор с равноотстоящими элементами

logspace

вектор с равноотстоящими в логарифмическом масштабе

 

элементами

meshgrid

задает двумерную сетку для 3d-графика

ones

матрица единиц

rand

равномерно распределенные случайные числа

randn

нормально распределенные случайные числа

zeros

нулевая матрица

:

вектор с равноотстоящими элементами

 

 

 

Специальные переменные и константы

ans

результат последней операции

eps

относительная точность вычислений с плавающей запятой

flops

счетчик числа операций с плавающей запятой

i,j

мнимая единица

inf

бесконечность

nargin

кол-во входных параметров функции

nargout

кол-во выходных параметров функции

pi

число π

realmax

максимальное действительное число

realmin

минимальное действительное число

 

 

 

Дата и время

clock

время

cputime

затраченное время процессора

date

дата

etime

затраченное время

tiс,toс

запуск-останов времени

 

 

 

Операции с матрицами

96

Функция

 

Действие

 

 

 

diag

 

выделить диагональ

fliplr

 

отразить матрицу по строкам

flipud

 

отразить матрицу по столбцам

reshape

 

изменить размер

rot90

 

повернуть матрицу на 90 градусов

tril

 

выделить нижнюю треугольную часть матрицы

triu

 

выделить верхнюю треугольную часть матрицы

 

 

 

 

 

 

 

 

Математические функции

 

Элементарные математические функции

abs

 

модуль

acos

 

арккосинус

acosh

 

гиперболический арккосинус

angle

 

угол

asin

 

арксинус

asinh

 

гиперболический арксинус

atan

 

арктангенс

atanh

 

гиперболический арктангенс

conj

 

сопряжение

cos

 

косинус

cosh

 

гиперболический косинус

exp

 

экспонента

imag

 

мнимая часть

log

 

натуральный логарифм

log10

 

десятичный логарифм

real

 

действительная часть

rem

 

остаток от деления

round

 

округление до ближайшего целого

sign

 

сигнум-функция (знак)

sin

 

синус

sinh

 

гиперболический синус

sqrt

 

квадратный корень

tan

 

тангенс

tanh

 

гиперболический тангенс

 

 

 

 

 

Спецфункции

bessel

 

функция Бесселя

besselh

 

функция Ганкеля

 

 

 

97

Функция

 

Действие

 

 

 

betainс

 

неполная бета-функция

betaln

 

логарифм бета-функции

ellipj

 

эллиптическая функция Якоби

ellipke

 

полный эллиптический интеграл

erf

 

функция ошибок

erfinv

 

обратная функция ошибок

gamma

 

гамма-функция

gammaln

 

логарифм гамма-функции

gammainc

 

неполная гамма-функция

 

 

 

 

 

 

Функции от матриц - линейная алгебра

 

 

Матричный анализ

cond

 

число обусловленности

det

 

определитель

norm

 

норма

orth

 

ортогонализация

rank

 

ранг

trace

 

сумма диагональных элементов

 

 

 

 

 

Системы линейных уравнений

inv

 

обратная матрица

\ or /

 

решение линейной системы

 

 

Собственные значения

eig

 

собственные значения и собственные вектора

poly

 

характеристический полином

 

 

 

 

 

Функции от матриц

expm

 

матричная экспонента, 4 варианта

funm

 

любая функция от матриц

logm

 

логарифм матрицы

sqrtm

 

корень из матрицы

 

 

 

 

 

 

Обработка данных и преобразование Фурье

 

 

Основные операции

cumprod

 

произведение элементов с накоплением

cumsum

 

сумма элементов с накоплением

max

 

максимальный элемент

mean

 

среднее значение

min

 

минимальный элемент

 

 

 

98

Функция

 

Действие

 

 

 

prod

 

произведение всех элементов

sort

 

сортировка по возрастанию

std

 

дисперсия

sum

 

сумма всех элементов

trapz

 

интегрирование методом трапеций

 

 

 

 

 

Конечные разности

diff

 

численное дифференцирование

gradient

 

градиент

 

 

 

 

 

Корреляция

corrcoef

 

коэффициенты корреляции

cov

 

матрица ковариации

 

 

 

 

 

Фильтрация и конволюция

conv

 

конволюция и умножение полиномов

deconv

 

деконволюция и деление полиномов

filter

 

цифровой фильтр

 

 

 

 

 

Преобразование Фурье

abs

 

модуль

angle

 

фаза

fft

 

дискретное преобразование Фурье

fftshift

 

сдвигает 0 в середину спектра

ifft

 

обратное дискретное преобразование Фурье

nextpow2

 

ближайшая большая степень двойки

 

 

 

 

 

 

Полиномиальные и интерполяционные функции

 

 

Полиномиальные функции

conv

 

умножение полиномов

deconv

 

деление полиномов

poly

 

задать полином с известными корнями

polyder

 

производная полинома

polyfit

 

аппроксимация полиномом данных

polyval

 

вычислить полином

polyvalm

 

вычислить полином от матрицы

roots

 

корни полинома

 

 

 

 

 

Интерполяция данных

interp1

 

интерполяция

 

 

 

 

 

Функции от функций

99

Функция

Действие

 

 

 

Нелинейные численные методы

fmin

минимизирует функцию одной переменной

fmins

минимизирует функцию нескольких переменных

fzero

находит 0 функции

ode23

решает систему дифференциальных уравнений (несколько

 

вариантов)

quad

численно вычисляет интеграл

 

 

 

 

 

Двумерная графика

 

Элементарная x-y графика

comet

отрисовка плоской траектории

fill

рисует закрашенный многоугольник

line

рисует график

loglog

график с логарифмическими осями

plot

линейный график

semilogx

график с логарифмической осью х

semilogy

график с логарифмической осью y

 

 

 

Специализированные графики

bar

рисует диаграмму

errorbar

график экспериментальных данных с ошибкой измерения

fplot

график функции

hist

насчитывает и рисует гистограмму

polar

график в полярных координатах

 

 

 

Разметка графика

grid

показать сетку

gtext

выводит текст, перемещаемый с помощью мыши

text

выводит текст в заданные координаты

title

выводит название графика

xlabel

подпись оси x

ylabel

подпись оси y

 

 

 

Трехмерная графика

comet3

отрисовка 3-мерной траектории

plot3

рисует линии и точки в 3d

contour

рисует изолинии

image

выводит рисунок

mesh

3d поверхность

 

 

100

Функция

 

Действие

 

 

 

surf

 

3d поверхность с тенями

colormap

 

задает цветовую палитру

 

 

 

 

 

 

Графические функции общего назначения

 

 

Создание и контроль окна графика

clf

 

очистить окно

close

 

закрыть окно

figure

 

создать окно

gcf

 

получить дескриптор активного окна

 

 

 

 

 

Создание и контроль осей

axes

 

создать оси

axis

 

задать масштаб и внешний вид осей

cla

 

очистить активные оси

gca

 

получить дескриптор активных осей

hold on/off

 

рисовать поверх или стирая

subplot

 

разбить окно на несколько графиков

 

 

 

 

 

Операции управления графикой

delete

 

удалить объект

drawnow

 

нарисовать всю накопленную графику

get

 

получить свойства объекта

reset

 

восстановить свойства объекта (по умолчанию)

set

 

установить свойства объекта

print

 

печатать график

 

 

 

 

 

 

 

 

Строковые функции

setstr

 

преобразует число в строку

strcmp

 

сравнить строки

int2str

 

преобразует целое число в строку

num2str

 

преобразует число в строку

str2num

 

преобразует строку в число

 

 

 

 

 

 

 

 

Функции ввода/вывода

fclose

 

закрыть файл

fopen

 

открыть файл

fread

 

читать бинарный файл

fwrite

 

писать в бинарный файл

fgetl

 

прочитать строку из файла

fprintf

 

писать данные в файл по формату

 

 

 

101