Progress-servis55.ru

Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

For в matlab

цикл for

12.04.2015, 14:57

Создать программу по всем 3 видам циклов. цикл с параметром,цикл с условием,цикл,и цикл с предусловием.
Найти сумму чисел 1 в квадрате до 10 c квадрате. операцию возведению в степень не использовать.

Цикл с предусловием, цикл с постусловием и цикл с параметром
Объясните пожалуйста как делать эти циклы. У меня не получается. Можете сделать как на фото, или на.

Написать в турбо паскале, Цикл с параметром, Цикл, с постусловием, и с предусловием пожалуйста

Цикл: Посчитать среднее арифметическое всех чисел в заданном диапазоне. Цикл while.
Напишите пожалуйста код для данной задачки с помощью цикла while Вывести числа в пользовательском.

12.04.2015, 15:00212.04.2015, 20:14 [ТС]3

r=[ 0 1 2 3 4 5 6 7 8];
for i=0:8
r1(i)=10^(r(i)/10);
disp(r1)
end

Добавлено через 4 часа 33 минуты
разобрался

Добавлено через 8 минут

Matlab M
12.04.2015, 20:174

если он нужен все-таки, то disp(r1) перенесите за цикл

Matlab M
Matlab M
13.04.2015, 10:55 [ТС]5

а как без цикла?)

Добавлено через 47 минут
все вижу)благодарю)

Добавлено через 13 часов 37 минут

на основе приведенного кода требуется модернезировать программу таким образом,чтобы исследовать зависимость Вероятности появления ошибки от отношения «сигнал-шум»(обазначим как rho )
усреднив результаты моделирования достаточное кол-во раз,построить график зависимость «вероятности ошибки от отношения сигнал/шум).

«rho» рассмотрим в пределах от 1 до 8 дб(для программы требуется перевести дб в разы)

теперь конкретно для программы.
введем соотношение rho=(n*(A^2)/(2*sigma^2))
из этого отношения необходимо каждый раз за прогон цикла(от 1 до 8 дб) выражать сигма и прогонять вышеприведенную программу(которая будет телом цикла) 1000 раз(НО ЗАМЕНИТЬ N*randn(1,length(s)) НА N*randn(1,length(s))*sigma)
кол-во ошибок за каждый прогон цикла записывать в массив(потом проссумировать и поделить на 160млн)-и в конце построить график «зависимости вероятности ошибки от rho) «

Условные операторы и циклы в MatLab

Условный оператор if

В самом простом случае синтаксис данного оператора if имеет вид:

Обращаю Ваше внимание что в отличие от современных языков программирования не используются такое понятие как составной оператор. Блок условного оператора обязательно заканчивается служебным словом end.

Ниже представлен пример реализации функции sign(), которая возвращает +1, если число больше нуля, -1 – если число меньше нуля и 0, если число равно нулю:

x = 5;
if x > 0
disp(1);
end
if x
% выполняются, если истинно условие
else
% выполняются, если условие ложно
end

Тогда приведенный выше пример можно записать следующим образом:

x = 5;
if x > 0
disp(1);
else
if x
% выполняются, если истинно выражение1
elseif
% выполняются, если истинно выражение2
.
elseif
% выполняются, если истинно выражениеN
end

и записывается следующим образом:

x = 5;
if x > 0
disp(1); % выполняется, если x > 0
elseif x = 0 и x

Рассмотрим пример использования составных условий. Пусть требуется проверить попадание переменной x в диапазон от 0 до 2. Программа запишется следующим образом:

x = 1;
if x >= 0 & x 2:

x = 1;
if x 2
disp(‘x не принадлежит диапазону от 0 до 2’);
else
disp(‘x принадлежит диапазону от 0 до 2’);
end

Используя логические операторы И, ИЛИ, НЕ, можно создавать разнообразные составные условия. Например, можно сделать проверку, что переменная x попадает в диапазон от -5 до 5, но не принадлежит диапазону от 0 до 1. Очевидно, это можно реализовать следующим образом:

Обратите внимание, что при сложном составном условии были использованы круглые скобки. Дело в том, что приоритет операции И выше приоритета операции ИЛИ, и если бы не было круглых скобок, то условие выглядело бы так: (x >= -5 и x 1. Очевидно, что такая проверка давала бы другой результат от ожидаемого.

Круглые скобки в программировании используются для изменения приоритетов выполнения операторов. Подобно арифметическим операторам, логические также могут быть изменены по желанию программиста. Благодаря использованию круглых скобок, сначала выполняется проверка внутри них, а, затем, за их пределами. Именно поэтому в приведенном выше примере они необходимы для достижения требуемого результата.

Приоритет логических операций следующий:

) – самый высокий приоритет;
И (&) – средний приоритет;
ИЛИ (|) – самый низкий приоритет.

Оператор цикла while

Язык программирования MatLab имеет два оператора цикла: while и for. С их помощью, например, выполняется программирование рекуррентных алгоритмов, подсчета суммы ряда, перебора элементов массива и многое другое.

В самом простом случае цикл в программе организуется с помощью оператора while, который имеет следующий синтаксис:

Здесь означает условное выражение подобное тому, которое применяется в операторе if, и цикл while работает до тех пор, пока это условие истинно.

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

Приведем пример работы цикла while для подсчета суммы ряда :

S = 0; % начальное значение суммы
i=1; % счетчик суммы
while i 20 % если S > 20,
break; % то цикл завершается
end
end % конец цикла
disp(S); % отображение суммы 21 на экране

В данном примере второе условие завершения цикла, когда S будет больше 20, записано в самом цикле и с помощью оператора break осуществляется выход из цикла на функцию disp(), стоящую сразу после цикла while.

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

a = [1 2 3 4 5 6 7 8 9];

исключая элемент с индексом 5. Такую программу можно записать следующим образом:

S = 0; % начальное значение суммы
a = [1 2 3 4 5 6 7 8 9]; % массив
i=0; % счетчик индексов массива
while i = : :

end

Рассмотрим работу данного цикла на примере реализации алгоритма поиска максимального значения элемента в векторе:

a = [3 6 5 3 6 9 5 3 1 0];
m = a(1); % текущее максимальное значение
for i=1:length(a) % цикл от 1 до конца вектора с
% шагом 1 (по умолчанию)
if m m,
m = a(i); % то m = a(i)
end
end % конец цикла for
disp(m);

В данном примере цикл for задает счетчик i и меняет его значение от 1 до 10 с шагом 1. Обратите внимание, что если величина шага не указывается явно, то он берется по умолчанию равным 1.

В следующем примере рассмотрим реализацию алгоритма смещения элементов вектора вправо, т.е. предпоследний элемент ставится на место последнего, следующий – на место предпоследнего, и т.д. до первого элемента:

a = [3 6 5 3 6 9 5 3 1 0];
disp(a);
for i=length(a):-1:2 % цикл от 10 до 2 с шагом -1
a(i)=a(i-1); % смещаем элементы вектора а
end % конец цикла for
disp(a);

Результат работы программы

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Приведенный пример показывает, что для реализации цикла со счетчиком от большего значения к меньшему, нужно явно указывать шаг, в данном случае, -1. Если этого не сделать, то цикл сразу завершит свою работу и программа будет работать некорректно.

MatLab Руководство для начинающих. Matlab сокращение от англ. Matrix Laboratory

Matlab M
НазваниеMatlab сокращение от англ. Matrix Laboratory
АнкорMatLab Руководство для начинающих.doc
Дата28.01.2017
Размер494 Kb.
Формат файла
Имя файлаMatLab Руководство для начинающих.doc
ТипДокументы
#549
страница6 из 6
Подборка по базе: 19 02 англ.docx, МАН LessonStudy каз русс англ.pdf, Письменное задание по англ.docx, Ответы к топикам англ..docx, APPLICATION OF RECURRENT NEURAL NETWORK USING MATLAB SIMULINK IN, КОНТР АНГЛ.docx, Топик на англ.docx, Контрольная по англ.docx, Лаба4 ЦОС_программные средства MATLAB.docx, umkd англ.pdf

5.2. Оператор цикла while

Язык программирования MatLab имеет два оператора цикла: while и for. С их помощью, например, выполняется программирование рекуррентных алгоритмов, подсчета суммы ряда, перебора элементов массива и многое другое.

В самом простом случае цикл в программе организуется с помощью оператора while, который имеет следующий синтаксис:

Здесь означает условное выражение подобное тому, которое применяется в операторе if, и цикл while работает до тех пор, пока это условие истинно.

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

Приведем пример работы цикла while для подсчета суммы ряда :

S = 0; % начальное значение суммы
i=1; % счетчик суммы
while i 20 % если S > 20,
break; % то цикл завершается
end
end % конец цикла
disp(S); % отображение суммы 21 на экране

В данном примере второе условие завершения цикла, когда S будет больше 20, записано в самом цикле и с помощью оператора break осуществляется выход из цикла на функцию disp(), стоящую сразу после цикла while.

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

a = [1 2 3 4 5 6 7 8 9];

исключая элемент с индексом 5. Такую программу можно записать следующим образом:

S = 0; % начальное значение суммы
a = [1 2 3 4 5 6 7 8 9]; % массив
i=0; % счетчик индексов массива
while i = : :

end

Рассмотрим работу данного цикла на примере реализации алгоритма поиска максимального значения элемента в векторе:

a = [3 6 5 3 6 9 5 3 1 0];
m = a(1); % текущее максимальное значение
for i=1:length(a) % цикл от 1 до конца вектора с
% шагом 1 (по умолчанию)
if m m,
m = a(i); % то m = a(i)
end
end % конец цикла for
disp(m);

В данном примере цикл for задает счетчик i и меняет его значение от 1 до 10 с шагом 1. Обратите внимание, что если величина шага не указывается явно, то он берется по умолчанию равным 1.

В следующем примере рассмотрим реализацию алгоритма смещения элементов вектора вправо, т.е. предпоследний элемент ставится на место последнего, следующий – на место предпоследнего, и т.д. до первого элемента:

a = [3 6 5 3 6 9 5 3 1 0];
disp(a);
for i=length(a):-1:2 % цикл от 10 до 2 с шагом -1
a(i)=a(i-1); % смещаем элементы вектора а
end % конец цикла for
disp(a);

Результат работы программы

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Приведенный пример показывает, что для реализации цикла со счетчиком от большего значения к меньшему, нужно явно указывать шаг, в данном случае, -1. Если этого не сделать, то цикл сразу завершит свою работу и программа будет работать некорректно.

6. Решения уравнения

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

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

На данном графике представлены графики функций y=sin(t)/t и (x/5) 2 +y 2 =1. Как не трудно заметить данные функции имеют три точки пересечения.

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

Графическим методом можно лишь примерно оценить решение. Для более точного нахождения решения в пакете MatLAB необходимо воспользоваться функцией fsolve(уравнение, начальное значение). Позже мы познакомимся как с помощью данной функции решать системы уравнений. В простейшем случае решаемое уравнение можно указать можно указать в одинарных кавычках, например: ‘x*x-abs(x)’. Но данная функция имеет три решения, представленных на рис.

Решение, которое найдет в этом случае функция fsolve будет определяться начальным значением откуда она начнет итерационную процедуру поиска решения. Например:

fsolve(‘x*x-abs(x)’,-2), ans = -1.0000;

fsolve(‘x*x-abs(x)’,0.6), ans = 1.0000;

fsolve(‘x*x-abs(x)’,0.4), ans = 7.9062e-008.

Функция fsolve продолжает итерационную процедуру до тех пор пока она не найдет решение с заданной точностью. По этому в нашем примере мы и получили 7.9062e-008 а не 0.

В случае более сложных функций их удобнее представить в виде M файла. Тогда в качестве первого параметра функции fsolve подставляется в одинарных кавычках имя этого файла.

7. М-файлы

Работа из командной строки MatLab затрудняется, если требуется вводить много команд и часто их изменять. Ведение дневника при помощи команды diary и сохранение рабочей среды незначительно облегчают работу. Самым удобным способом выполнения групп команд MatLab является использование М-файлов, в которых можно набирать команды, выполнять их все сразу или частями, сохранять в файле и использовать в дальнейшем. Для работы с М-файлами предназначен редактор М-файлов. С его помощью можно создавать собственные функции и вызывать их, в том числе и из командного окна.

Раскройте меню File основного окна MatLab и в пункте New выберите подпункт M-file. Новый файл открывается в окне редактора M-файлов, которое изображено на рисунке.

М-файлы в MatLab бывают двух типов: файл-программы (Script M-Files), содержащие последовательность команд, и файл-функции, (Function M-Files), в которых описываются функции, определяемые пользователем.

7.2. Файл-программа

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

Сохраните теперь файл с именем mydemo.m в подкаталоге work основного каталога MatLab, выбрав пункт Save as меню File редактора. Для запуска на выполнение всех команд, содержащихся в файле, следует выбрать пункт Run в меню Debug. На экране появится графическое окно Figure 1 , содержащее графики функций.

Очень удобной возможностью, предоставляемой редактором М-файлов, является выполнение части команд. Закройте графическое окно Figure 1. Выделите при помощи мыши, удерживая левую кнопку, или клавишами со стрелками при нажатой клавише Shift, первые четыре команды и выполните их из пункта Text. Обратите внимание, что в графическое окно вывелся только один график, соответствующий выполненным: командам. Запомните, что для выполнения части команд их следует выделить и нажать клавишу F9.

Отдельные блоки М-файла можно снабжать комментариями, которые пропускаются при выполнении, но удобны при работе с М-файлом. Комментарии начинаются со знака процента и автоматически выделяются зеленым цветом, например:

Открытие существующего М-файла производится при помощи пункта Open меню File рабочей среды, либо редактора М-файлов.

7.3. Файл-функция

М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.

Функция average — это достаточно простой M-файл, который вычисляет среднее значение элементов вектора:
function y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X — вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
[m,n] = size(x);
if (

Попробуйте ввести эти команды в M-файл, именуемый average.m. Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average, надо ввести следующие операторы:

Структура М-функции. M-функция состоит из:

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

Строка определения функции. Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов.

Пример
Строка определения функции average имеет вид:
function y = average(x)
Здесь:

  1. function — ключевое слово, определяющее М-функцию;
  2. y — выходной аргумент;
  3. average — имя функции;
  4. x — входной аргумент.

Каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.

Если функция имеет более одного выходного аргумента, список выходных аргументов помещается в квадратные скобки. Входные аргументы, если они присутствуют, помещаются в круглые скобки. Для отделения аргументов во входном и выходном списках применяются запятые.

function [x, y, z] = sphere(theta, phi, rho)

Имена входных переменных могут, но не обязаны совпадать с именами, указанными в строке определения функции.

Первая строка комментария . Для функции average первая строка комментария выглядит так:

% AVERAGE Среднее значение элементов вектора

Это — первая строка текста, которая появляется, когда пользователь набирает команду help . Кроме того, первая строка комментария выводится на экран по команде поиска lookfor. Поскольку эта строка содержит важную информацию об M-файле, она должна быть тщательно составлена.

Имена М-функций. В системе MATLAB на имена М-функций налагаются те же ограничения, что и на имена переменных — их длина не должна превышать 31 символа. Более точно, имя может быть и длиннее, но система MATLAB принимает во внимание только первые 31 символ. Имена М-функций должны начинаться с буквы; остальные символы могут быть любой комбинацией букв, цифр и подчеркиваний.

Имя файла, содержащего М-функцию, составляется из имени функции и расширения “.m”.

Программирование в MATLAB (стр. 1 из 2)

Кафедра: Информационные технологии

ПРОГРАММИРОВАНИЕ В MATLAB

count – переменная цикла,

start – ее начальное значение,

final – ее конечное значение,

step – шаг, на который увеличивается count при каждом следующем заходе в цикл

цикл заканчивается, как только значение count становится больше final.

Пусть требуется вывести семейство кривых для x€ [0, 2π], которое задано функцией, зависящей от параметра

y (x, a) = e -ax sin x,

для значений параметра а от -0.1 до 0.1. Ниже приведен листинг файл-программы для вывода семейства кривых.

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

while условие цикла

Цикл работает, пока выполняется (истинно) условие цикла. Для задания условия выполнения цикла допустимы следующие операции отношения:

=

ОбозначениеОперация отношения
==Равенство
=Больше или равно
>Больше
Не равно

Задание более сложных условий производится с применением логических операторов. Логические операторы приведены в следующей таблице

ОператорУсловиеЭквивалентная запись
Логическое «и»x n .

Пусть, например, имеется следующая совокупность данных:

i123
хi1,21,41,61,8
yi8,38938,62518,92868,9703

Здесь n – порядок интерполяционного многочлена,

Требования к программе

При выполнении данной работы необходимо:

· Задать границы отрезка [x0, xn], на котором строится интерполяционный многочлен P(x)

· Задать n – количество отрезков интерполяции (или, что то же самое, степень многочлена)

Примечание: x0, xn, n вводятся с клавиатуры.

· Для получения исходных данных (x, y) (количество пар точек (xi, yi), по которым строится интерполяционный многочлен P(x)n1=n+1) предусмотреть:

— Ввод произвольно расположенных узлов xi, i=0, n с клавиатуры

— Расчет узлов xi, i=0, n, соответствующих равномерному расположению аргумента x на отрезке [x0, xn]

— В пп. 1,2 значения yi, i=0, n либо вводятся с клавиатуры (если исходная функция неизвестна), либо вычисляются по заданной функции f(x). Выражение, определяющее функцию, вводится с клавиатуры и должно соответствовать правилам записи выражений в MATLAB

· Решить систему уравнений для определения коэффициентов многочлена P(x)

· Построить графики исходной таблично заданной функции и многочлена P(x)

· Если исходные данные заданы в виде функции f(x), построить график погрешности интерполяции /f(x) – P(x)/. Рассчитать максимальное по модулю значение погрешности интерполяции на заданном промежутке.

При выполнении последнего пункта на отрезке [x0, xn] взять не менее 500 точек для проведения расчетов

Необходимо составить программу вычисления коэффициентов и построения сплайн-функции S(x), «склеенной» из кусков многочленов 3‑го порядка Si(x), которые имеют специальную форму записи:

Требования к программе

При выполнении данной работы необходимо:

· Задать границы отрезка [x0, xn], на котором строится сплайн-функция S(x)

· Задать n – количество отрезков интерполяции, на каждом из которых строится кубический многочлен Si(x).

· Примечание: x0, xn, n вводятся с клавиатуры.

· Организовать ввод исходных данных (x, y) (количество пар точек (xi, yi), по которым строится сплайн-функция S(x), n1=n+1), предусмотрев:

— Ввод произвольно расположенных узлов xi, i=0, n с клавиатуры

— Расчет узлов xi, i=0, n, соответствующих равномерному расположению аргумента x на отрезке [x0, xn]

— В пп. 1,2 значения yi, i=0, n либо вводятся с клавиатуры (если исходная функция неизвестна), либо вычисляются по заданной функции f(x). Выражение, определяющее функцию, вводится с клавиатуры и должно соответствовать правилам записи выражений в MATLAB

— Ввод данных (xi, yi, i=0, n) из файла

· Для краевых условий 1–3 рассчитать коэффициенты di кубических сплайнов

· Для определения коэффициентов естественного кубического сплайна (краевые условия 1) необходимо решить следующую систему уравнений:

· Построить графики исходной функции и сплайн-функций для всех трех типов краевых условий.

· Построить графики функций погрешности сплайн-интерполяции f(x) – S(x) для всех трех типов краевых условий.

· Рассчитать максимальные по модулю значения погрешности интерполяции на заданном промежутке [x0, xn] для каждого вида сплайна.

В пакете MATLAB индексы одномерных и двумерных массивов начинаются с 1, а не с 0. Учесть это при составлении программы.

Читать еще:  Fuzzy logic matlab
Ссылка на основную публикацию
Adblock
detector