Progress-servis55.ru

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

Вывод в matlab

Консольный ввод – вывод.

Дата добавления: 2015-06-12 ; просмотров: 2754 ; Нарушение авторских прав

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

Ввод – вывод в системе Matlab.

Консольный ввод – вывод.

Для обеспечения взаимодействия с пользователем в процессе выполнения М-файлов в Matlab используются следующие команды (операторы).

disp – вывод значений указанной переменой или указанного текста в командное окно.

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

Чтобы вывести значения нескольких переменных, например, для печати таблиц, нужно создать единый объект, который содержал бы все эти значения. Это можно сделать, объединением соответствующих переменных в единый вектор, пользуясь операцией создания вектора-строки:

disp ( [x1, x2…xN]).

Аналогично можно объединить несколько текстовых переменных:

disp ([‘столбец 1’, ‘столбец 2’… ‘столбец N’])

Сложнее объединить в одну строку текст и значения переменных, это часто бывает необходимым. Трудности возникают потому, что нельзя объединять текстовые и числовые переменные. Задача решается с помощью функции num2str, которая осуществляет такое преобразование.

ОператорS=num2str(x) преобразует числовое значение переменной в текстовое представление.

Пусть х – числовая переменная. Тогда вывод ее значения с поясняющим текстом обеспечивается вызовом нижеследующим вызовом функции disp:

disp ([‘текст пояснения’, num2str (x)])

Например, если х=0,5, то в результате вызова

disp ([‘значение х: ’, num2str (x)])

значение х: 0,5.

Другой способ достижения этого же результата заключается в использование функции sprintf.

Обращение к ней имеет вид:

S=sprintf (‘текст 1 % frm текст 2’, х)

В результате создается текстовая строка S, состоящая из текста, указанного в тексте1, и значения переменной х в формате frm. Текст из фрагмента ‘текст 2’ размещается после значения переменной х. Эту функцию можно использовать в вызове disp:

>>disp (sprintf (‘текст 1 % frm’, х)).

В нижеследующей таблице приведены спецификаторы формата, используемые в функции sprintf:

СпецификаторОписание
Один символ
%dДесятичное число со знаком
%eПредставление с плавающей точкой, 3.14е+00
%EПредставление с плавающей точкой, 3.14Е+00
%fПредставление с фиксированной точкой
%gБолее компактное, чем в %е или %f представление с подавлением незначащих нулей.
%GТо же, что %g, но Е – на верхнем регистре
%oВосьмеричное представление (без знака)
%sСимвольная строка
%uДесятичное без знака
%xШестнадцатеричное представление, (буква a-f)
%XШестнадцатеричное представление, (буква A-F)

>>Y = sprint (‘Параметр_1 = % g’, X)

Y = параметр_1 = 1е-15

Удобным инструментом выбора некоторой из альтернатив является функция menu, которая создает окно меню пользователя. Функция имеет следующий формат:

К = menu(‘’, ‘Альтернатива_1’, ‘Альтернатива_2’… ‘Альтернатива_N’)

Пример: в результате вызова функции menuс параметрами, как это показано ниже,

К = menu (‘What?’, ‘Go’, ‘Exit’);

на экране появится следующие меню:

Выполнение программы приостанавливается, программа ожидает выбора одной из кнопок с альтернативами. После нажатия какой – либо кнопки выходному параметру присваивается значение номера выбранной альтернативы. Альтернативы нумеруются числами от 1 до N. В зависимости от значения K можно выбрать нужное продолжение программы.

Для ввода данных с клавиатуры удобно использовать функцию input, обращение к которой имеет следующий вид:

x = input (‘текст-подсказка’)

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

Пример script – файла, использующего рассмотренные выше вызовы:

x = input (‘Enter x:’);

В результате выполнения этого script – файла в командном окне будет следующее:

При выполнении данного файла в меню была два раза выбрана кнопка «Go», что привело к тому, функция sin была вычислена два раза, и два раза напечатан результат вычисления. В третий раз была выбрана кнопка «Exit», и script – файл завершил выполнение.

|следующая лекция ==>
Создание файл – функций (процедур).|Файловый ввод – вывод.

Не нашли то, что искали? Google вам в помощь!

Способы ввода данных и вывода результатов

Основы программирования в MATLAB

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

for count = start:step:final

Здесь count – переменная цикла; start – её начальное значение; final – конечное значение; step – шаг на который увеличивается (или уменьшатся) переменная count. Если шаг равен 1, то его можно не указывать.

Например, создадим матрицу Q, размера , элементы которой вычисляются по формуле: , для этого в М-файле hil создадим цикл:

% Задание размера матрицы Q

% Инициализируем матрицу Q и заполняем её нулями

% Вычисляем элементы матрицы Q

% Отображаем матрицу на экране

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

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

В условии цикла используются операции отношения или логические операторы:

Полезен материал? Поделись:

=

ОбозначениеОперации отношения
= =равенство
)Меньше (больше)
=)Меньше или рано (больше или равно)
Не равно
Логические операторыУсловиеЗапись в MatLabЭквивалентная запись
Логическое « и » and (x

Команда warningслужит для вывода предупреждения в командное окно.

Теперь вызов Rfun от аргумента, меньшего единицы по модулю, приведет к выводу в командное окно предупреждения:

Warning: результат комплексный

В общем виде оператор ветвления представляет конструкцию

if — elseif – else

Напишем файл-функцию ifdem, демонстрирующую работу if — elseif – else.

disp(‘a равно нулю’)

disp(‘a больше или равно 3’)

disp(‘a меньше 3, но не равно 0, 1, 2’)

В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else.

Вызовем функцию ifdem с аргументом 1.2:

a меньше 3, но не равно 0, 1, 2

При организации циклических вычислений следует, позаботься о том, чтобы внутри цикла не возникало ошибок, и не было зацикливания программы. Для досрочного прерывания цикла можно использовать команду break. Оператор breakпрерывает цикл и происходит выполнение операторов, расположенных в строках следующих за последним end.

Например, напишем программу prch, определяющую является ли заданное число N простым.

N = input(‘Ведите число: ‘)

% Предполагаем, что число простое (pr=1)

% Перебираем все возможные делители числа N от 2 до N/2

% Если N делится на i,

% то число N не является простым (pr=0)

% и прерывается выполнение цикла

% Если pr равно 1, то N — простое число

disp(‘НЕ ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ’)

Прервать не только цикл, но и программу можно также оператором error.

Например, изменим начало программы prch.

N = input(‘Ведите число: ‘)

if (N > 0) & (ost == 0)

% Предполагаем, что натуральное число простое (pr=1)

error(‘ЧИСЛО N НЕ ЯВЛЯЕТСЯ НАТУРАЛЬНЫМ’)

% Перебираем все возможные делители числа N от 2 до N/2

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

4. Оператор альтернативного выбора switch

Одним из способов организации разветвлений является оператор switch, имеющий следующую структуру

Если значение параметра равно значению 1, то выполняются операторы 1, иначе, если параметр равен 2, то выполняются операторы 2 и т.д. Если значение параметра не совпадает ни с одним из значений в группах case, то выполняются операторы, которые идут после слова otherwise.

Например, выведем на экран название дня недели, соответствующее заданному числу D, при условии что в месяце 31 день и 1-ое число – понедельник.

D = input(‘ВВЕСТИ ЧИСЛО ОТ 1 ДО 31: ‘)

md = mod(D,7); %ВЫЧИСЛЕНИЕ ОСТАТКА ОТ ДЕЛЕНИЯ D НА 7

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

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

Например, напишем файл-функцию, которая проверяет попадает ли значение функции в точке в заданный интервал .

function str = znach (’fname’, ymin, ymax, x)

% проверка входных аргументов

error(‘нижняя граница должна быть меньше верхней’)

y = feval(fname, x)

if (y >= ymin) & (y > r = znach(‘sin’, 0.2, 0.5, pi/5)

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

Способы ввода данных и вывода результатов

1.Исходные данные можно задавать с помощью оператора присваивания.

A = [1.2 3.2 4.5; 2.3 7.8 4.4];

2. Интерактивный ввод осуществляется с помощью команды input – запрос на ввод с клавиатуры. Если в M-файле набрать команду

a = input(‘Ведите значение a = ‘)

% ввод значения с клавиатуры и занесение введенного значения в а

то, в командном окне появится надпись

Ведите значение a = |

далее следует ожидание ввода пользователем значения a.

1. Вывод на экран можно осуществить с помощью команды disp.

Результат на экране будет выведен в том формате, который был выбран заранее или по умолчанию.

2. Функция fprintf позволяет управлять видом записи чисел. Схема использования fprintf для вывода на экран при работе с числовыми переменными такова:

fprintf(‘формат’, список переменных).

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

fprintf(‘x = %7.4f, y = %11.8fn’, x, y)

В результате, в командном окне увидим

x = 0.7854, y = 0.70710678

Последовательность %7.4f задает формат вывода переменной x, которая расположена первой в последовательности вывода. Знак процента указывает на начало формата, цифра 7 обозначает, что всего под значение переменной x отводится 7 позиций (включая знак и десятичную точку), цифра 4 после разделителя-точки обеспечивает точность отображения результата ─ четыре цифры после десятичной точки. Спецификатор f указывает на то, что следует вывести число в формате с плавающей точкой. Аналогичным образом работает формат %11.8f для вывода y.

Для вывода целого числа используется формат %d.

Завершение строки с форматами символом n приводит к последующему выводу данных с новой строки.

Формат fprintf работает с матрицей по столбцам. Например, напечатаем таблицу значений функции sin(x).

%Печать заголовка таблицы

fprintf(‘ ТАБЛИЦА ЗНАЧЕНИЙ ФУНКЦИИ sin(x)n’)

fprintf(‘ | x | y |n’)

%создание вектора значений аргумента

%конструирование матрицы, первая строка которой содержит значение аргумента

Документация

Формат вывода

MATLAB ® отображает вывод и в Командном окне и в Live Editor. Формат вывода можно изменить при помощи нескольких настроек.

Интервал строки форматов в Выводе

По умолчанию, отображения MATLAB очищает строки в командном окне выход.

Можно выбрать одну из двух опций цифрового дисплея в MATLAB.

loose — Сохраняет отображение пустых строк (значение по умолчанию).

compact — Подавляет отображение пустых строк.

Чтобы отформатировать выходное отображение, выполнить одно из следующих действий:

На вкладке «Главная страница (Home)» в разделе «Конфигурация (Environment)» нажмите «Настройки (Preferences)». Выберите MATLAB> Command Window, и затем выберите опцию Numeric display.

Используйте format функция в командной строке, например:

Примечание

Параметры экрана межстрочного интервала не применяются в Live Editor.

Числа с плавающей запятой формата

Можно изменить способ, которым числа отображаются и в Командном окне и в Live Editor. По умолчанию MATLAB использует формат short (5-разрядные масштабированные значения фиксированной точки).

Например, предположите, что вы вводите x = [4/3 1.2345e-6] в Командном окне. Выходное отображение MATLAB зависит от формата, который вы выбрали. Эта таблица показывает некоторые доступные форматы цифрового дисплея, и их соответствующий выход.

short (значение по умолчанию)

x = 1.3333e+00 1.2345e-06

x = 1.333333333333333 0.000001234500000

Примечание

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

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

На вкладке «Главная страница (Home)» в разделе «Конфигурация (Environment)» нажмите «Настройки (Preferences)». Выберите MATLAB> Command Window, и затем выберите опцию Numeric format.

Используйте format функция, например:

Смотрите format страница с описанием для списка и описания всех поддерживаемых числовых форматов.

Перенос строк кода, чтобы соответствовать ширине окна

Строка кода или ее вывод могут превысить ширину Командного окна, требуя, чтобы вы использовали горизонтальную полосу прокрутки, чтобы просмотреть целую строку. Чтобы разбить одну строку ввода или вывода на несколько строк, для соответствия текущей ширине Командного окна:

На вкладке «Главная страница (Home)» в разделе «Конфигурация (Environment)» нажмите «Настройки (Preferences)». Выберите MATLAB> Command Window.

Выберите Wrap Lines.

Примечание

Опции переноса строки не применяются в Live Editor.

Подавление Вывода

Чтобы подавить код выход, добавьте точку с запятой (;) в конец команды. Это полезно, когда код генерирует большие матрицы.

Выполнение следующего кода создает A , но не показывает получившуюся матрицу в Командном окне или Live Editor:

Просмотр постраничного вывода

Выход в Командном окне может превысить видимый фрагмент окна. Можно просмотреть выход, один экран за один раз:

В Командном окне введите more on включить постраничный вывод.

Введите команду, которая генерирует крупносерийное производство.

Перейдите к следующей строке путем нажатия Enter.

Перейдите к следующей странице путем нажатия Space Bar.

Прекратите отображать вывод путем нажатия q.

Чтобы отключить постраничный вывод, введите more off .

Примечание

Опции постраничного вывода не применяются в Live Editor.

Очищение командного окна

Если Командное окно кажется нарушенным, можно очистить весь текст (не очищая рабочую область) путем выполнения одного из следующих действий:

На вкладке Home, в разделе Code, выбирают Clear Commands> Command Window, чтобы очистить буфер прокрутки Командного окна.

Используйте clc функционируйте, чтобы очистить буфер прокрутки Командного окна.

Используйте home функционируйте, чтобы очистить ваше текущее представление Командного окна, не очищая буфер прокрутки.

Смотрите также

Документация MATLAB
Поддержка

© 1994-2020 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

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

SciPy, ввод и вывод в MATLAB

SciPy (произносится как сай пай) — это пакет прикладных математических процедур, основанный на расширении Numpy Python. С SciPy интерактивный сеанс Python превращается в такую же полноценную среду обработки данных и прототипирования сложных систем, как MATLAB, IDL, Octave, R-Lab и SciLab. В этом посте я хотел бы рассказать о возможностях пакета ввода/вывода scipy.io, который позволяет работать с файлами данных Octave и MATLAB.

Введение

Для начала импортируем пакет scipy.io следующим образом:

Основные процедуры пакета scipy.io, которые позволяют работать с файлами MATLAB:

Чтобы не нарушать лицензионного соглашения MATLAB, работать будем в среде GNU Octave, которая имеет совместимые с MATLAB функции сохранения и загрузки. Введем в командной строке Octave:

Код для импорта MATLAB файла в Python:

Как видим, файл прочитан верно. Теперь рассмотрим экспорт из SciPy в MATLAB:

Импортируем Python файл в Octave:

Чтобы проверить содержимое файла MATLAB без чтения данных в памяти, используем команду whosmat:

Функция whosmat возвращает список кортежей, по одному для каждого массива (или другого объекта), который содержится в файле MATLAB. Каждый кортеж содержит имя, содержимое файла и тип данных.

Структуры MATLAB

Структуры MATLAB похожи на словари Python dicts. Отличие заключается в том, что именем поля обязательно должна быть строка. Значением поля может быть любой объект.
Вспомним, что MATLAB — акроним MATrix LABoratory. Т.к. основное назначение MATLAB — работа с матрицами, поэтому все объекты в ней — это матрицы. Даже одно число представляется в виде матрицы размера (1, 1).

Загрузим MATLAB структуру в Python:

В версиях SciPy от 0.12.0 структуры MATLAB возвращаются как структурированные массивы numpy. Названия полей массива numpy являются названием полей структуры MATLAB. Имена полей можно прочитать с помощью команды dtype, как в примере выше. Подробнее про типы данных structed arrays .

Таким образом, в MATLAB массив структур имеет размер как минимум 2D, что повторяется при чтении в SciPy. Чтобы сократить размерность до 1, используем параметр squeeze_me:

Иногда удобнее загружать структуры MATLAB как объекты python, а не numpy массивы. Чтобы это сделать, используйте параметр struct_as_record = False для загрузки.

Параметр struct_as_record = False прекрасно работает совместно с параметром squeeze_me:

Самый простой способ экспорта структур из python в MATLAB — с помощью словарей dicts:

В MATLAB загружается как:

Также можно экспортировать структуры из python в MATLAB с помощью массивов numpy:

Массивы ячеек (cell) MATLAB

Массивы ячеек (cell) в MATLAB похожи на списки python. Элементы в массивах ячеек могут содержать любой тип объекта MATLAB. Также cell очень похожи на массивы объектов numpy. Рассмотрим пример экспорта cell из MATLAB в numpy.

Вернемся к Python:

Экспорт из numpy в массив cell MATLAB сделаем c помощью numpy-массива объектов:

Проверим правильность экспорта cell из numpy в Octave:

На этом, пожалуй, закончим. Надеюсь для кого-то эта статья послужит поводом для интеграции исследований в MATLAB со свободным программным обеспечением.
Источник: Документация scipy

Читать еще:  Ошибка в сертификате
Ссылка на основную публикацию
Adblock
detector
Формат цифрового дисплеяПример Выход