Как сделать видимым в матлаб воркспейс
Перейти к содержимому

Как сделать видимым в матлаб воркспейс

  • автор:

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

Когда вы запускаете MATLAB ® , рабочий стол появляется в своей раскладке по умолчанию.

MATLAB desktop showing the toolstrip at the top and below it, the Current Folder browser on the left, the Command Window in the middle, and the Workspace browser on the right

По умолчанию рабочий стол включает эти инструменты:

По умолчанию панель инструментов включает три вкладки, Home, Plots и Apps.

Просмотрите и измените текущую папку.

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

Просмотрите и управляйте содержимым рабочей области в MATLAB.

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

В MATLAB Online™ и в системах с более низким разрешением экрана, значениями по умолчанию MATLAB к размещению 2D столбца с браузером Рабочей области на левой стороне рабочего стола, под Браузером текущей папки.

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

Выберите Preconfigured Layout

MATLAB обеспечивает набор предварительно сконфигурированных структур рабочего стола, которые оптимизированы для определенных рабочих процессов. Чтобы выбрать предварительно сконфигурированное размещение, на вкладке Home, в разделе Environment, нажимают Layout и выбирают размещение. Чтобы восстановить рабочий стол MATLAB к его раскладке по умолчанию, выберите Default.

Например, если вы работаете в основном в Командном окне, выбираете опцию All but Command Window Minimized (Minimize All but Command Window в MATLAB Online ), чтобы максимизировать Командное окно и минимизировать все другие инструменты в рабочем столе.

MATLAB desktop with all tools minimized except the Command Window, which is maximized.

Скройте инструменты

Чтобы скрыть инструмент, нажмите кнопку в строке заголовка инструмента и выберите Close. Чтобы скрыть только строку заголовка для инструмента, на вкладке Home, в разделе Environment, нажимают Layout. Затем в разделе Show очистите Panel Titles.

В MATLAB Online не поддерживается сокрытие инструментов. Чтобы оптимизировать вашу структуру рабочего стола, минимизируйте инструменты вместо этого.

Минимизируйте инструменты

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

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

Toolstrip with an arrow pointing to the toolstrip minimize icon.

Чтобы минимизировать другие инструменты включая Браузер текущей папки, Командное окно, Редактор, и Live Editor, в строке заголовка инструмента, нажимает кнопку и выбирает Minimize. Минимизированный инструмент появляется вдоль ребра рабочего стола, показанного стрелкой в Минимизировать значке. Например, минимизировать значок указывает, что инструмент минимизирует к правому краю рабочего стола по умолчанию. Чтобы переместить минимизированный инструмент в другой край рабочего стола, перетащите инструменты к желаемому местоположению.

Например, чтобы минимизировать Браузер текущей папки, в правом верхнем углу Браузера текущей папки, нажимают кнопку и выбирают Minimize. Браузер текущей папки минимизирует к левой стороне экрана.

MATLAB desktop with the Current Folder browser minimized

Чтобы открыть минимизированный инструмент временно на рабочем столе, кликните по инструменту. Чтобы восстановить инструмент к его первоначальному размеру, дважды щелкают по инструменту. В качестве альтернативы можно нажать кнопку и выбрать Restore.

В MATLAB Online , чтобы минимизировать инструмент, сворачивают панель, где инструмент находится. Например, если рабочий стол MATLAB Online находится в раскладке по умолчанию с Браузером текущей папки в левой панели, скройте Браузер текущей папки путем нажатия кнопки в левом нижнем углу панели. Чтобы восстановить его, нажмите кнопку. Если левая или правая панель содержит несколько инструментов, можно минимизировать отдельный инструмент путем нажатия кнопки слева от ее строки заголовка. Несколько инструментов в нижнем отображении панели как вкладки и не могут быть минимизированы.

Открытые инструменты

Чтобы открыть инструменты, которые вы ранее скрыли, на вкладке Home, в разделе Environment, нажимают Layout. Затем в разделе Show выберите настольный инструмент, который вы хотите показать на рабочем столе.

Также можно открыть некоторые инструменты программно с помощью функции. Например, чтобы открыть Редактор, используйте edit функция. Чтобы открыть браузер Рабочей области, используйте workspace функция.

Расстыкуйте инструменты и документы

Расстыкуйте инструменты, чтобы открыть их в отдельном окне и переместить их вне рабочего стола MATLAB. Чтобы расстыковать инструмент, в строке заголовка прикрепленного инструмента, нажимают кнопку и выбирают Undock. В качестве альтернативы перетащите инструмент его строкой заголовка к новому местоположению за пределами рабочего стола MATLAB. Чтобы положить обратно расстыкованный инструмент в рабочий стол, в верхнем правом углу расстыкованного инструмента, нажимают кнопку и выбирают Dock.

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

Например, если у вас есть файл fact.m открытый в Редакторе, чтобы расстыковать только, что файл, в строке заголовка Редактора, нажимает кнопку и выбирает Undock fact.m. MATLAB открывает fact.m в отдельном окне и листах Редактор, прикрепленный в рабочем столе. Чтобы положить обратно файл в рабочий стол, в правом верхнем из расстыкованного файла, нажимают кнопку и выбирают Dock. Если вы имеете несколько расстыкованных документов и хотите переместить их всех назад в рабочий стол, выберите Dock All in tool .

Undocked document fact.m.

Расстыкованные инструменты и документы появляются на Windows ® панель задач или эквивалент для вашей платформы. Кликните по значку панели задач для инструмента или документа, чтобы сделать его активным.

Расстыковка инструментов и документов не поддерживается в MATLAB Online .

Переупорядочивание и документы мозаики

Когда вы открываете документы MATLAB, они открываются в связанном инструменте, таком как Редактор, Live Editor или редактор Переменных. Отдельные документы открываются как отдельные вкладки в инструменте. Чтобы оптимизировать размещение нескольких документов, можно переупорядочить или разместить их рядом. Также можно измениться, где вкладки появляются в инструменте.

По умолчанию вкладки появляются наверху документа. Чтобы переупорядочить отдельные вкладки документа в инструменте, перетащите вкладки к различной позиции. Чтобы переупорядочить вкладки документа в алфавитном порядке, на вкладке View, в разделе Document Tabs, выбирают Alphabetize.

Чтобы сменить положение вкладок в инструменте, на вкладке View, нажимают Tabs Position и выбор из доступных параметров. Например, чтобы отобразить вкладки на стороне Редактора вместо наверху, с открытым Редактором, переходят к вкладке View, нажимают Tabs Position и выбирают Left. MATLAB отображает вкладки Редактора левой стороны инструмента.

Editor with document tabs on the left.

Чтобы просмотреть несколько документов целиком в инструменте, можно разместить документы рядом. К документам мозаики в Редакторе Live Editor и редактор Переменных, переходят к вкладке View и в разделе Tiles, выбирают опцию мозаики. Например, чтобы просмотреть два файла рядом друг с другом в Редакторе, перейдите к вкладке View и нажмите кнопку Left/Right.

Editor with two documents displayed side by side using a left/right tile layout.

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

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

В MATLAB Online , к документам мозаики, в строке заголовка инструмента, нажимают кнопку, выбирают Tile All, и затем выбирают опцию мозаики.

Сохраните структуры рабочего стола

Когда вы заканчиваете сеанс, MATLAB сохраняет текущую структуру рабочего стола. Следующий раз, когда вы запускаете MATLAB, рабочий стол, появляется, когда вы оставили его.

Если вы чередуетесь между двумя или больше индивидуально настраиваемыми структурами рабочего стола, можно сохранить их всех, чтобы легко переключиться между ними. Чтобы сохранить размещение, на вкладке Home, в разделе Environment, нажимают Layout и выбирают Save Layout. Чтобы использовать сохраненное размещение, на вкладке Home, нажимают Layout и выбирают ваше сохраненное размещение. Чтобы удалить или переименовать сохраненные размещения, выберите Manage Layouts.

MATLAB хранит все сохраненные размещения в папке настроек. MATLAB сохраняет текущую структуру рабочего стола в конце сеанса в файле MATLABDesktop.xml .

Некоторые инструменты, такие как Браузер документации, веб-браузер, и редактор Переменных, не вновь открылись автоматически, даже если они были открыты, когда вы закончили последний сеанс. Можно использовать опции запуска, чтобы задать инструменты, которые вы хотите открыть на запуске. Для получения дополнительной информации смотрите, Задают опции запуска.

Сохранение размещений и определение опций запуска не поддерживаются в MATLAB Online .

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

Похожие темы

  • Настройте панели инструментов MATLAB
  • Измените настольные шрифты
  • Измените настольные цвета

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

Чтобы соединить несколько сигналов с осциллографом, перетащите дополнительные сигналы с блоком scope. Дополнительный порт автоматически создан.

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

  1. Откройте окно scope.
  2. Из панели инструментов выберите File>Number of Input Ports>More.
  3. Введите номер входных портов, до 96.
Сигналы от невиртуальных шин и массивов шин

Можно соединить сигналы от невиртуальных шин и массивов шин с блоком Scope . Чтобы отобразить сигналы шины, используйте нормальный или режим симуляции акселератора. Блок Scope отображает каждый сигнал элемента шины в порядке, элементы появляются в шине от верхней части до нижней части. Сглажены вложенные элементы шины. Например, в этой модели nestedBus сигнал имеет const , subSignal , и step сигналы как элементы. subSignal подшина имеет chirp и sine сигналы как его элементы шины. В блоке Scope , двух элементах subSignal соедините шиной отображение между const и step сигналы.

Simulink model of a scope connected to the nestedBus, const, subSignal, chirp, sine, and step signals.

Scope window showing the four signals and their names in the Scope legend: nestedBus.const, nestedBus.subSignal.chirp, nestedBus.subSignal.sine, nestedBus.step.

Сохраните блок Simulation Data Using Scope

В этом примере показано, как сохранить сигналы в рабочее пространство MATLAB с помощью блока Scope. Вы можете нас эти шаги для блоков Time Scope или Осциллографа. Чтобы сохранить данные от Плавающего средства просмотра Осциллографа или Осциллографа, смотрите, Избавляют Данные моделирования от Плавающего Осциллографа.

Используя vdp модель, включите регистрацию данных к рабочей области. Можно следовать за командами ниже, или в окне Scope, нажать Configuration Properties button и перейти к вкладке Logging, включить Данные логов к рабочей области.

vdp scopeConfig = get_param('vdp/Scope','ScopeConfiguration'); scopeConfig.DataLogging = true; scopeConfig.DataLoggingSaveFormat = 'Dataset'; out = sim('vdp');

В окне MATLAB Command просмотрите записанные данные от out.ScopeData структура.

x1_data = out.ScopeData.Values.Data(:,1); x1_time = out.ScopeData.Values.Time; plot(x1_time,x1_data)

Приостановите отображение при выполнении

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

  1. Откройте окно scope и запустите симуляцию.
  2. Выберите Simulation>Simulink Snapshot. Состоянием окна scope в левой нижней части является Frozen, но симуляция продолжает запускаться в фоновом режиме.
  3. Взаимодействуйте с приостановленным отображением. Например, используйте измерения, скопируйте изображение осциллографа или увеличение или.
  4. Чтобы разморозить отображение, выберите Simulation>Simulink Snapshot снова.

Скопируйте изображение осциллографа

Этот пример использует модель vdp, чтобы продемонстрировать, как скопировать и вставить изображение осциллографа.

  1. Добавьте блок scope в свою модель.
  2. Соедините сигналы определить объем портов. Смотрите Подключение Несколько Сигналов к Осциллографу. Например, в vdp модель, соедините сигналы x1 и x2 к осциллографу.
  3. Откройте окно scope и запустите симуляцию.

Scope window displaying the simulation results of the vdp model

vdp scope visualization with a white background for printing

Постройте массив сигналов

В этом примере показано, как осциллограф строит массив сигналов.

В этой простой модели блок Sine Wave соединяется с блоком scope. Блок Sine Wave выходные параметры четыре сигнала с амплитудами [10, 20; 30 40] . Осциллограф отображает каждую синусоиду в массиве отдельно в матричном порядке (1,1), (2,1), (1,2), (2,2).

Осциллографы в моделях, на которые ссылаются,

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

Примечание

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

Этот пример использует sldemo_mdlref_counter модель и как топ-модель и как модель, на которую ссылаются, от sldemo_mdlref_basic модель.

openExample('sldemo_mdlref_basic')

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

sldemo_mdlref_counter model with the breadcrumb highlighted to show you are in the CounterA referenced model block from the sldemo_mdlref_basic model.

Запустите симуляцию с помощью кнопки основного направления, затем откройте осциллограф ScopeA . Осциллограф визуализирует данные из целой модели.

Scope window with model simulation results

Если вы в частности хотите визуализировать модель, на которую ссылаются, в изоляции, открыть модель как топ-модель. В этом примере щелкните правой кнопкой по блоку CounterA и выберите Open as Top Model . Модель открывается в другом окне, и навигационная цепочка только показывает имя модели, на которое ссылаются.

sldemo_mdlref_counter model with the breadcrumb highlighted to show you are in a non-referenced version of the model

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

Scope window showing a constant zero line

Осциллографы в Enabled подсистеме

Когда помещено в Enabled блоке Subsystem, осциллографы ведут себя по-другому в зависимости от режима симуляции:

  • Режим normal mode — осциллограф отображает данные на графике, когда подсистема включена. График отображения показывает разрывы, когда подсистема отключена.

Sample scope window with gaps where the subsystem is disabled

Sample scope window with straight lines where the subsystem is disabled

Измените ось X Осциллографа

В этом примере показано, как изменить значения оси X блока Scope с помощью параметров смещения Отрезка времени и Отображения времени. Параметр Отрезка времени изменяет, сколько из времени симуляции показывают и возмещает метки оси X . Параметр смещения Отображения времени изменяет метки, используемые на оси X .

Можно также использовать эту процедуру для блока Time Scope, блока Floating Scope или средства просмотра Осциллографа.

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

model = 'ModifyScopeXAxis'; open_system(model); sim(model); open_system([model,'/Scope']);

Измените показанный отрезок времени

Измените параметр Отрезка времени к 2. Можно следовать за командами ниже, или в окне Scope, нажать Configuration Properties button и перейти к вкладке Time.

scopeConfig = get_param([model,'/Scope'],'ScopeConfiguration'); scopeConfig.TimeSpan = '2'; sim(model); open_system([model,'/Scope']);

Ось X осциллографа теперь показывает только последние 2 временных шага и возмещает метки оси X , чтобы показать 0-2. Нижняя панель инструментов показывает, что ось X возмещена 8. Это смещение отличается от значения смещения Отображения времени.

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

Возместите Метки оси X

Измените параметр смещения Отображения времени к 5. Снова, используйте команды ниже, или в окне Scope, нажмите Configuration Properties button и перейдите к вкладке Time.

scopeConfig.TimeDisplayOffset = '5'; sim(model); open_system([model,'/Scope']);

Теперь тот же отрезок времени 2 является показом в осциллографе, но метки оси X возмещены 5, запускающийся в 5 и заканчивающийся в 7. Если вы нажимаете кнопку оси X Промежутка, метки оси X все еще запускаются в 5.

Покажите модули сигнала на отображении осциллографа

Можно задать модули сигнала на контуре компонента модели ( Subsystem и блоки Model ) использование блоки Outport и Inport . Смотрите Спецификацию единиц измерения в Моделях Simulink. Можно затем соединить блок Scope с блоком Outport или сигналом, происходящим из блока Outport . В этом примере свойство Unit для блока Out1 было установлено в m/s .

Sample model with units specified

Покажите модули на отображении осциллографа

  1. Из панели инструментов окна Scope выберите Configuration Properties button .
  2. В Свойствах Настройки: диалоговое окно Scope, выберите вкладку Display.
  3. В поле Y-label введите заголовок для оси Y, сопровождаемой (%) . Например, войти
Velocity (%)

Scope window with the units displayed in the cursor measurements and y-axis label.

От панели инструментов Simulink можно также выбрать Debug> Information Overlays> Units. Вы не должны вводить (%) в свойстве Y-Label.

Покажите, что модули на осциллографе отображаются программно
  1. Получите свойства scope. В Командном окне войти
load_system('my_model') s = get_param('my_model/Scope','ScopeConfiguration');
s.ActiveDisplay = 1 s.YLabel = 'Velocity (%)';

Можно также установить параметр модели ShowPortUnits к ‘on’ . Все осциллографы в вашей модели, с и без (%) в свойстве Y-Label покажите модули на отображениях.

load_system('my_model') get_param('my_model','ShowPortUnits')
ans = off
set_param('my_model', 'ShowPortUnits','on')
ans = on
Определите модули из объекта записанных данных

При сохранении данных моделирования из осциллографа с Dataset формат, можно найти информацию о модуле в DataInfo поле объекта timeseries.

Примечание

Поддержка осциллографа модулей сигнала только для Dataset логгирование формата а не для наследия, регистрирующего форматы Array Структура , и Structure With Time .

  1. Из панели инструментов окна Scope выберите Configuration Properties button .
  2. В Окне свойств Настройки выберите вкладку Logging.
  3. Установите флажок Log data to workspace. В текстовом поле введите имя переменной для сохранения данных моделирования. Например, введите ScopeData .
  4. Из панели инструментов окна Scope выберите кнопку Run .
  5. В Командном окне войти
ScopeData.getElement(1).Values.DataInfo
Package: tsdata Common Properties: Units: m/s (Simulink.SimulationData.Unit) Interpolation: linear (tsdata.interpolation)
Соедините сигналы с различными модулями к осциллографу

Когда существует несколько портов на осциллографе, Simulink ® гарантирует, что каждый порт получает данные только с одним модулем. При попытке объединить сигналы с различными модулями (например, при помощи блока Bus Creator), Simulink возвращает ошибку.

Осциллографы показывают модули в зависимости от количества портов и отображений:

  • Номер портов, равных количеству отображений — Один порт, присвоен одному отображению с модулями для сигнала порта, показанного на y — подпись по осям.
  • Больше, чем количество отображений — Один порт присвоен одному отображению с последним отображением, присвоенным остающиеся сигналы. Различные модули показывают на последнем y — подпись по осям как список, разделенный запятыми.

Выберите Number of Displays и Layout

  1. Из окна Scope выберите Configuration Properties button .
  2. В диалоговом окне Configuration Properties выберите вкладку Main, и затем нажмите кнопку Layout.
  3. Выберите количество отображений и размещения, которое вы хотите. Можно выбрать больше чем четыре отображения подряд или столбец. Щелкните в размещении, и затем перетащите свой указатель мыши, чтобы расширить размещение максимум до 16 строк на 16 столбцов.

Прикрепление и окно Undock Scope на рабочий стол MATLAB

  1. В правом угле окна Scope кликните по кнопке Dock Scope.

Workspace Browser

Браузер Рабочей области позволяет вам просмотреть и в интерактивном режиме управлять содержимым рабочей области в MATLAB ® . Для каждой переменной или объекта в рабочей области, браузер Рабочей области также может отобразить статистику, когда это необходимо, такую как минимум, максимум и среднее значение.

Можно отредактировать содержимое скалярных переменных (1 на 1) непосредственно в браузере Рабочей области. Щелкните правой кнопкой по переменной и выберите Edit Value. Чтобы отредактировать другие переменные, дважды кликните имя переменной в браузере Рабочей области, чтобы открыть его в редакторе Переменных.

Откройте браузер рабочей области

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

  • Панель инструментов MATLAB: На вкладке Home, в разделе Environment, нажимают Layout. Затем в разделе Show выберите Workspace.
  • Командная строка MATLAB: Войти workspace .

В MATLAB Online™ можно минимизировать браузер Рабочей области путем сворачивания панели, в которой это находится. Например, если браузер Рабочей области находится в панели левой стороны, нажмите кнопку в левом нижнем углу панели, чтобы свернуть панель. Чтобы восстановить панель, нажмите кнопку. Если браузер Рабочей области находится в левой или правой боковой панели, и панель содержит несколько инструментов, также можно минимизировать его путем нажатия кнопки слева от строки заголовка браузера Рабочей области.

workspace функция не поддерживается в MATLAB Online .

Примеры

Создайте и отредактируйте переменную

Создайте 3×3 матрица и затем отредактируйте значения матрицы в браузере Рабочей области.

Создайте 3×3 матрица и сохраните ее в A .

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

Откройте браузер Рабочей области для представления A .

workspace

Щелкните правой кнопкой по переменной и выберите Edit Value. Замените числа 4, 5, и 6 с числами 10, 11, и 12, соответственно.

Программируемое использование

workspace

workspace отображает браузер Рабочей области. Если браузер Рабочей области уже открыт, MATLAB выбирает инструмент.

workspace функция не поддерживается в MATLAB Online .

Вывод внутренних переменных из функций в workspace

Author24 — интернет-сервис помощи студентам

Хочу чтобы Matlab выводил в workspace, где находятся таблицы переменные из функций.
Подскажите пожалуйста как это сделать?
из функции SecondPart_OptimizationCoordinate нужно вывести в таблицу две глобальные переменные x и y.

главный файл проекта:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
clear all; clc; %VECTOR_SIZE = 100; %ROW_AMOUNT = 2; ITERATION_AMOUNT = 1000; EPSILON = 0.001; %Точность h = 0.1; %Шаг %a и b - значения радиусов для ф-ии. Эллипса. a = 3; b = 2; ELLIPSE = 'ELLIPSE'; ROSENBROCK = 'ROSENBROCK'; %Часть 2. Оптимизация покоординатно. SecondPart_OptimizationCoordinate(ELLIPSE, h, EPSILON, ITERATION_AMOUNT, a, b); SecondPart_OptimizationCoordinate(ROSENBROCK, h, EPSILON, ITERATION_AMOUNT, a, b);

код функции SecondPart_OptimizationCoordinate:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
%Часть 2. Оптимизация покоординатно. function SecondPart_OptimizationCoordinate(function_name, h, EPSILON, ITERATION_AMOUNT, a, b) global x; global y; %Перем. для пропуска проверки условия на то, предыд. y min из последних трех или нет. change_coord = 1; %Для выхода из цикла, если кол-во. итераций больше ITERATION_AMOUNT. number_iteration = 1; change = 1; constant = 2; i = 2; x(1,1) = 2; %первая координата, первое значение. x(2,1) = 2; %вторая координата, первое значение. x(1,2) = x(change,i-1) + h; %первая координата, второе значение. x(2,2) = x(constant,i-1); %вторая координата, второе значение. y(1) = EllipseFunct_or_FunctRosenbrock(function_name, x(1,1), x(2,1), a, b); new_value_of_function = EllipseFunct_or_FunctRosenbrock(function_name, x(1,2), x(2,2), a, b); if new_value_of_function > y(1) h = h* (-1); x(1,2) = x(change,i-1) + h; y(2) = EllipseFunct_or_FunctRosenbrock(function_name, x(change,i), x(constant,i), a ,b); else y(2) = new_value_of_function; end %Цикл пока модуль разности функций больше точности эпсилон и количество итераций меньше ITERATION_AMOUNT(10000). while (abs(y(i)-y(i-1)) > EPSILON && (number_iteration < ITERATION_AMOUNT)) number_iteration = number_iteration + 1; i = i + 1; change_coord = change_coord + 1; %прибавляем шаг к первой координате. x(change,i) = x(change,i-1) + h; %вторую координату переписываем. x(constant,i) = x(constant,i-1); %находим значение функции от новых значений. new_value_of_function = EllipseFunct_or_FunctRosenbrock(function_name, x(1,i), x(2,i), a, b); %disp ('x(1,i)='); %disp (x(1,i)); %disp ('x(2,i)='); %disp (x(2,i)); %если функция от текущих значений больше функции от предыдущих, то h = h* (-1), . иначе y(i) = new_value_of_function. if new_value_of_function > y(i-1) %обнуляем последнее значение x(change,i) = NaN; i = i - 1; %чтобы вернуться к предыдущему минимальному значению функции h = h* (-1); %Если после смены координаты, по которой шагаем сделали не меньше 3 точек, то делаем проверку min y из последних 3-х. значений. if (change_coord >= 3) %если функция от значений на предыдущем шаге меньше текущих и меньше чем на шаге i-2, то меняем координату перемещения. if y(i-1) >= y(i) %После перемены координаты по которой шагаем - обнуляем change_coord. change_coord = 0; if (constant == 1) constant = 2; change = 1; else constant = 1; change = 2; end end end else y(i) = new_value_of_function; end end %конец цикла while %====================================Графическая часть==================================== %построение графика x_contour = -5:0.1:5; y_contour = -5:0.1:5; [X, Y] = meshgrid(x_contour, y_contour); if strcmp(function_name, 'ELLIPSE') == 1 %title('Function ELLIPSE'); Z = (X/a).^2 + (Y/b).^2; min_x = 0; min_y = 0; contour_amount = 50; elseif strcmp(function_name, 'ROSENBROCK') == 1 Z = 100 * (Y - X.^2).^2 + (1 - X).^2; min_x = 1; min_y = 1; contour_amount = 200; end %figure %mesh(X,Y,Z); figure contour(X, Y, Z, contour_amount); %[C, h] = contour(X, Y, Z, contour_amount); %clabel(C, h); % отображение меток уровня hold on; plot(x(1, :), x(2, :), '); %вывод точки минимума. %text(min_x, min_y,'•MINIMUM(1,1)') plot(min_x, min_y, 'r*'); text(min_x-0.2, min_y-0.4,'MIN') % выводначальной точки на график text(x(1,1), x(2,1), 'A0', . 'BackgroundColor',[.7 .7 .7]); % вывод решения на график %text(x(1,i) - 4, x(2,i), . text(-4.9, -3.9, . char(['x1 = ' num2str(x(1,i))], . ['x2 = ' num2str(x(2,i))], . ['y = ' num2str(y(i))], . ['итераций - ' num2str(number_iteration)]), . 'BackgroundColor',[.7 .7 .7]); clear all; end

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *