A comparison of different solutions for full-text search in web applications using PostgreSQL and other technology. Presented at the PostgreSQL Conference West, in Seattle, October 2009.
[若渴]Study on Side Channel Attacks and Countermeasures Aj MaChInE
[投影片錯誤更正] p.43 中間32數字改成64。右上藍色小框64改成63
原本要整理Meltdown與Spectre,但這兩個所利用的硬體行為之後都跟cache side channel有關係,所以閱讀Meltdown與Spectre之餘,就整理了相關cache side channel攻擊與防禦。
回饋問題:
一: 為什麼LLC要切割成LLC slice?
"Modern Intel processors, starting with the Sandy Bridge microarchitecture, use a more complex architecture for the LLC, to improve its performance. The LLC is divided into per-core slices, which are connected by a ring bus. Slices can be accessed concurrently and are effectively separate caches, although the bus ensures that each core can access the full LLC (with higher latency for remote slices)."
二: flush+reload with shared memory pages,為什麼要 flush+reload? 不是可以直接存取到資料?
討論的是共用shared library,洩漏victim使用shared library的情形。
三: RDTSCP ?
可量測執行指令的cycle數。
四: side channel攻擊需要環境運作的程式不能太複雜?
Kuon: 實際案例 embed運作環境並不複雜,e.g. trustzone上可能只運作openSSL。
AJ: 就算在複雜環境,可以找到觸發Victim的特定運算點,也是可以進行觀測。
Майбутня технологія народжується з найсвітліших умів, які вдень і вночі працюють над революційними проектами, спрямованими на те, щоб зробити життя людини більш комфортним. І саме знання того, які саме сектори можуть мати найбільший вплив у майбутньому, особливо якщо ви підприємець, є ключовим фактором того, щоб не залишатись позаду.
Кожна велика компанія, незалежно від їх призначення, інвестує в технології майбутнього.
Ми не знаємо, чи всі ці чудові технології будуть дійсно трансцендентними. Однак є такі, які, безсумнівно, впливають та вплинуть на людське життя з великою силою, і які обіцяють мати ще більшу популярність у майбутньому.
A comparison of different solutions for full-text search in web applications using PostgreSQL and other technology. Presented at the PostgreSQL Conference West, in Seattle, October 2009.
[若渴]Study on Side Channel Attacks and Countermeasures Aj MaChInE
[投影片錯誤更正] p.43 中間32數字改成64。右上藍色小框64改成63
原本要整理Meltdown與Spectre,但這兩個所利用的硬體行為之後都跟cache side channel有關係,所以閱讀Meltdown與Spectre之餘,就整理了相關cache side channel攻擊與防禦。
回饋問題:
一: 為什麼LLC要切割成LLC slice?
"Modern Intel processors, starting with the Sandy Bridge microarchitecture, use a more complex architecture for the LLC, to improve its performance. The LLC is divided into per-core slices, which are connected by a ring bus. Slices can be accessed concurrently and are effectively separate caches, although the bus ensures that each core can access the full LLC (with higher latency for remote slices)."
二: flush+reload with shared memory pages,為什麼要 flush+reload? 不是可以直接存取到資料?
討論的是共用shared library,洩漏victim使用shared library的情形。
三: RDTSCP ?
可量測執行指令的cycle數。
四: side channel攻擊需要環境運作的程式不能太複雜?
Kuon: 實際案例 embed運作環境並不複雜,e.g. trustzone上可能只運作openSSL。
AJ: 就算在複雜環境,可以找到觸發Victim的特定運算點,也是可以進行觀測。
Майбутня технологія народжується з найсвітліших умів, які вдень і вночі працюють над революційними проектами, спрямованими на те, щоб зробити життя людини більш комфортним. І саме знання того, які саме сектори можуть мати найбільший вплив у майбутньому, особливо якщо ви підприємець, є ключовим фактором того, щоб не залишатись позаду.
Кожна велика компанія, незалежно від їх призначення, інвестує в технології майбутнього.
Ми не знаємо, чи всі ці чудові технології будуть дійсно трансцендентними. Однак є такі, які, безсумнівно, впливають та вплинуть на людське життя з великою силою, і які обіцяють мати ще більшу популярність у майбутньому.
Installing and Using Python
Basic I/O
Variables and Expressions
Conditional Code
Functions
Loops and Iteration
Python Data Structures
Errors and Exceptions
Object Oriented with Python
Multithreaded Programming with Python
Install/Create and Using Python Library
Compile Python Script
Resources
===========================
and 7 Quizzes
Graphic Notes on Introduction to Linear AlgebraKenji Hiranabe
Graphic Notes on Introduction to Linear Algebra authored by Prof. Gilbert Strang.
This is an idea for visualization to better understand linear algebra.
If you want a PowerPoint version, feel free to let me know, I'll share it with you.
“실시간 급상승 검색어” 기능은 실시간으로 포털사이트 사용자들의 검색 질의(Query) 횟수를 기준으로 순위를 선정하여 시각적으로 보여줌으로써, 검색 결과를 통해 현재 어떤 것이 이슈화 되고 있는지 파악할 수 있어 많은 사용자에게 편리하게 사용되어져 왔다. 하지만, 분리된 포털사이트로 인한 검색결과의 차이와 실시간으로 쏟아지는 다량의 정보로 인해 사용자들은 한 번에 많은 데이터를 처리해야 되는 문제에 맞닥뜨리게 된다. 본 논문에서는 이러한 문제들을 해결하기 위해 사용자들이 한 번에 처리할 수 있도록 다량의 정보를 요약 및 분석해주는 기술이 필요하다고 판단되어, 실시간 급상승 검색어 데이터와 그에 파생된 많은 정보의 검색결과를 텍스트 랭크 알고리즘을 중심으로 활용하여 분석 및 요약하는 기술을 제안한다.
Abstract: This workshop teaches basic algorithms in whiteboarding interviews. All the code examples are in Python and the course has dual purpose teaching basic Python programming.
This presentation about Python Interview Questions will help you crack your next Python interview with ease. The video includes interview questions on Numbers, lists, tuples, arrays, functions, regular expressions, strings, and files. We also look into concepts such as multithreading, deep copy, and shallow copy, pickling and unpickling. This video also covers Python libraries such as matplotlib, pandas, numpy,scikit and the programming paradigms followed by Python. It also covers Python library interview questions, libraries such as matplotlib, pandas, numpy and scikit. This video is ideal for both beginners as well as experienced professionals who are appearing for Python programming job interviews. Learn what are the most important Python interview questions and answers and know what will set you apart in the interview process.
Simplilearn’s Python Training Course is an all-inclusive program that will introduce you to the Python development language and expose you to the essentials of object-oriented programming, web development with Django and game development. Python has surpassed Java as the top language used to introduce U.S. students to programming and computer science. This course will give you hands-on development experience and prepare you for a career as a professional Python programmer.
What is this course about?
The All-in-One Python course enables you to become a professional Python programmer. Any aspiring programmer can learn Python from the basics and go on to master web development & game development in Python. Gain hands on experience creating a flappy bird game clone & website functionalities in Python.
What are the course objectives?
By the end of this online Python training course, you will be able to:
1. Internalize the concepts & constructs of Python
2. Learn to create your own Python programs
3. Master Python Django & advanced web development in Python
4. Master PyGame & game development in Python
5. Create a flappy bird game clone
The Python training course is recommended for:
1. Any aspiring programmer can take up this bundle to master Python
2. Any aspiring web developer or game developer can take up this bundle to meet their training needs
Learn more at https://www.simplilearn.com/mobile-and-software-development/python-development-training
Презентация к лекции "Движение твёрдого тела в случае Эйлера" курса Динамика твёрдого тела и систем тел. Рассматриваются следующие вопросы и понятия: эллипсоид энергии и эллипсоид инерции, полодии, перманентное вращение, неустойчивость вращения вокруг оси со средним моментом инерции, определение угловых скоростей и углов Эйлера, регулярная прецессия.
Installing and Using Python
Basic I/O
Variables and Expressions
Conditional Code
Functions
Loops and Iteration
Python Data Structures
Errors and Exceptions
Object Oriented with Python
Multithreaded Programming with Python
Install/Create and Using Python Library
Compile Python Script
Resources
===========================
and 7 Quizzes
Graphic Notes on Introduction to Linear AlgebraKenji Hiranabe
Graphic Notes on Introduction to Linear Algebra authored by Prof. Gilbert Strang.
This is an idea for visualization to better understand linear algebra.
If you want a PowerPoint version, feel free to let me know, I'll share it with you.
“실시간 급상승 검색어” 기능은 실시간으로 포털사이트 사용자들의 검색 질의(Query) 횟수를 기준으로 순위를 선정하여 시각적으로 보여줌으로써, 검색 결과를 통해 현재 어떤 것이 이슈화 되고 있는지 파악할 수 있어 많은 사용자에게 편리하게 사용되어져 왔다. 하지만, 분리된 포털사이트로 인한 검색결과의 차이와 실시간으로 쏟아지는 다량의 정보로 인해 사용자들은 한 번에 많은 데이터를 처리해야 되는 문제에 맞닥뜨리게 된다. 본 논문에서는 이러한 문제들을 해결하기 위해 사용자들이 한 번에 처리할 수 있도록 다량의 정보를 요약 및 분석해주는 기술이 필요하다고 판단되어, 실시간 급상승 검색어 데이터와 그에 파생된 많은 정보의 검색결과를 텍스트 랭크 알고리즘을 중심으로 활용하여 분석 및 요약하는 기술을 제안한다.
Abstract: This workshop teaches basic algorithms in whiteboarding interviews. All the code examples are in Python and the course has dual purpose teaching basic Python programming.
This presentation about Python Interview Questions will help you crack your next Python interview with ease. The video includes interview questions on Numbers, lists, tuples, arrays, functions, regular expressions, strings, and files. We also look into concepts such as multithreading, deep copy, and shallow copy, pickling and unpickling. This video also covers Python libraries such as matplotlib, pandas, numpy,scikit and the programming paradigms followed by Python. It also covers Python library interview questions, libraries such as matplotlib, pandas, numpy and scikit. This video is ideal for both beginners as well as experienced professionals who are appearing for Python programming job interviews. Learn what are the most important Python interview questions and answers and know what will set you apart in the interview process.
Simplilearn’s Python Training Course is an all-inclusive program that will introduce you to the Python development language and expose you to the essentials of object-oriented programming, web development with Django and game development. Python has surpassed Java as the top language used to introduce U.S. students to programming and computer science. This course will give you hands-on development experience and prepare you for a career as a professional Python programmer.
What is this course about?
The All-in-One Python course enables you to become a professional Python programmer. Any aspiring programmer can learn Python from the basics and go on to master web development & game development in Python. Gain hands on experience creating a flappy bird game clone & website functionalities in Python.
What are the course objectives?
By the end of this online Python training course, you will be able to:
1. Internalize the concepts & constructs of Python
2. Learn to create your own Python programs
3. Master Python Django & advanced web development in Python
4. Master PyGame & game development in Python
5. Create a flappy bird game clone
The Python training course is recommended for:
1. Any aspiring programmer can take up this bundle to master Python
2. Any aspiring web developer or game developer can take up this bundle to meet their training needs
Learn more at https://www.simplilearn.com/mobile-and-software-development/python-development-training
Презентация к лекции "Движение твёрдого тела в случае Эйлера" курса Динамика твёрдого тела и систем тел. Рассматриваются следующие вопросы и понятия: эллипсоид энергии и эллипсоид инерции, полодии, перманентное вращение, неустойчивость вращения вокруг оси со средним моментом инерции, определение угловых скоростей и углов Эйлера, регулярная прецессия.
Определение параметров средств отделения створок головного обтекателя ракеты-носителя. Презентация к лекции курса "Основы синтеза механических систем".
Материалы лекции курса "Динамика твёрдого тела и систем твёрдых тел". Построение уравнений движения систем со сферическими, универсальными и цилиндрическими шарнирами. Метод Й. Виттенбурга.
Моделирование и анализ дискретно-событийных системMATLAB
В этом вебинаре вы узнаете, как инструменты MathWorks могут быть использованы для моделирования событийных систем, как например логистические (цепи поставок), системы телекоммуникации и связи или системы бизнес процессов и управления. SimEvents дополняет инструменты MATLAB и Simulink для дискретно-событийного моделирования (discrete-event simulation , DES). Данный инструмент расширяет возможности, позволяя оценивать такие параметры систем, как простои и заторы, конфликт ресурсов, задержки в процессах.
Эволюция сервисов видео монетизации Unity Ads и сервиса реплей-шеринга Everyp...DevGAMM Conference
Последние новости и новые возможности Unity Ads и Everyplay. Новые возможности сервиса видео-монетизации Unity Ads — видео кросс-промо/house ads. Новая комьюнити Everyplay, как изменится взаимодействие с пользователями.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Основы языка Питон: функции, элементы функционального программирования, списочные выражения, генераторы. Презентация к лекции курса "Технологии и языки программирования".
Статический анализ: вокруг Java за 60 минутAndrey Karpov
Статический анализ всё больше воспринимается как неотъемлемая часть процесса разработки качественного программного обеспечения. Разумеется, у этой технологии уже есть свои сторонники и противники, но, несмотря на это, тема статического анализа всё более актуальна и требует детального рассмотрения. Рассмотрим, что такое статический анализ, как он применяется и как влияет на качество и надёжность кода. Поговорим о важности раннего обнаружения ошибок и дефектов уязвимости. Рассмотрим существующие инструменты для Java, такие как Sonar Java, FindBugs и анализатор встроенном в среду разработки IntelliJ IDEA. Расскажем историю, почему несмотря на уже существующие инструменты, мы решили разработать PVS-Studio для Java, как мы это делали и что в итоге получилось. В конце затронем вопрос интеграции статических анализаторов кода в большие старые проекты. Другими словами, как увидеть 100500 срабатываний и не упасть духом.
Обзор работ 7-ой Европейской конференции по космическому мусору (офис центра управления полетами ЕКА, Дармштадт, Германия, 18-21 апреля 2017 г)
Презентация к семинару кафедры теоретической механики Самарского университета (16.05.17)
Презентация к семинару кафедры теоретической механики. По материалам статьи “Detumbling Space Debris Using Modified Yo-Yo Mechanism” (Юдинцев В. В.,
Асланов В. С.) Journal of Guidance, Control, and Dynamics, Vol. 40, No. 3. https://arc.aiaa.org/doi/abs/10.2514/1.G000686
(2017), pp. 714-721.
Презентация для IV Всероссийской научно-технической
конференции "Актуальные проблемы ракетно-космической техники» ("IV Козловские чтения")". г. Самара, 14-17 сентября 2015 г.
Рассматривается метод отдельных тел (метод А. Ф. Верещагина) для построения уравнений движения систем тел со структурой дерева. Приводится пример программы моделирования движения цепи n тел на языке MATLAB.
1. Основы MATLAB
Лекция 1
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
http://yudintsev.info
17 сентября 2016 г.
2. Содержание
1 Введение
2 Основы работы в MATLAB
3 Операторы
4 Функции MATLAB
5 Функции пользователя
6 Ячейки
7 Структуры
8 Задачи
Юдинцев В. В. Основы MATLAB 2
4. Введение
История создания
MATLAB как язык программирования был разработан Кливом
Моулером (Cleve Moler) в конце 1970-х годов для упрощения
использования программных библиотек LINPACK и EISPACK без
необходимости изучения Фортрана.
В начале 80-х Джек Литл (Jack Little) Модернизировал эту систему
для персональных компьютеров типа IBM PC, VAX и Macintosh.
В 1984 основана компания The MathWorks inc.
Последняя версия (09.2016): MATLAB R2016b.
Юдинцев В. В. Основы MATLAB 4
5. Введение
Структура MATLAB
Высокоуровневый интерпретируемый язык программирования,
включающий основанные на матрицах структуры данных,
широкий спектр функций, интегрированную среду разработки,
объектно-ориентированные возможности и интерфейсы к
программам, написанным на других языках программирования.
Toolboxes – коллекции MATLAB-функций, для решения
определённого класса задач (Optimization Toolbox, Partial
Differential Equation Toolbox, Spline Toolbox, Statistic Toolbox).
Simulink – приложение для анализа динамических систем.
Юдинцев В. В. Основы MATLAB 5
6. Введение
Свободное ПО
Близкое по функциональности свободное ПО:
GNU Octave https://www.gnu.org/software/octave;
FreeMat http://freemat.sourceforge.net;
Scilab http://www.scilab.org;
R (для статистических расчётов) https://www.r-project.org.
Python с библиотеками numpy, scipy, matplotlib http://www.scipy.org;
Sagemath http://www.sagemath.org.
Юдинцев В. В. Основы MATLAB 6
9. Основы работы в MATLAB
Окно программы
Command window – окно команд;
Command history – окно истории истории команд;
Current directory – окно, содержащие список файлов и
папок текущего каталога;
Editor – текстовый редактор.
Workspace – окно со списком переменных текущей сессии.
Юдинцев В. В. Основы MATLAB 9
10.
11. Основы работы в MATLAB
MATLAB как калькулятор
a=1.2 – присвоение некоторого значения переменной a
1 >> a =1.2
2 a = 1.2
b=sin(a)*sqrt(a+2) – вычисление выражения и вывод
результата
1 >> b= sin ( a ) * s q r t ( a +2)
2 b =
3 1.6673
; – точка с запятой в конце выражения подавляет вывод
результата:
1 >> b= sin ( a ) * s q r t ( a +2) ;
2 >>
Юдинцев В. В. Основы MATLAB 11
12. Основы работы в MATLAB
Базовые команды редактора (Command window)
↑ – возврат к предыдущей команде.
help имя функции – справка по функции (или F1).
cls – очистить окно команд (Command window).
clear – удалить все переменные в текущей сессии.
Ctrl C - (в окне команд) прерывание вычислений.
Юдинцев В. В. Основы MATLAB 12
13. Основы работы в MATLAB
Синтаксис
Имена переменных могут состоять из латинских буквам, цифр,
знака подчёркивания: a, a1, x1, x_1. Имена переменных
чувствительны к регистру: A и a – это разные переменные.
При создании переменной может быть явно указан тип (по
умолчанию double):
1 >> a= int16 (25) ;
Юдинцев В. В. Основы MATLAB 13
14. Основы работы в MATLAB
Типы данных
Тип Описание
double вещественный, 64 бит
single вещественный, 32 бит
int8 знаковый целочисленный, 8 бит
int16 знаковый целочисленный, 16 бит
int32 знаковый целочисленный, 32 бит
int64 знаковый целочисленный, 64 бит
uint8 беззнаковый целочисленный, 8 бит
uint16 беззнаковый целочисленный, 16 бит
uint32 беззнаковый целочисленный, 32 бит
uint64 беззнаковый целочисленный, 64 бит
Юдинцев В. В. Основы MATLAB 14
15. Основы работы в MATLAB
Синтаксис
Квадратные скобки используются для создания векторов и
матриц: a=[1,2,3,4].
Круглые скобки используются для вызова функций и для
группировки выражений: sin(1.2)+a*(c+1).
Фигурные скобки для создания массивов ячеек:
a={'Масса',10}
Юдинцев В. В. Основы MATLAB 15
16. Основы работы в MATLAB
Создание последовательностей
var=начальное значение:шаг:конечное значение по
умолчанию шаг равен +1
1 >> c = 1:2:10
2 c =
3 1 3 5 7 9
Создание вектора-столбца
1 >> c = ( 1 : 2 : 1 0 ) ’
2 c =
3 1
4 3
5 5
6 7
7 9
Юдинцев В. В. Основы MATLAB 16
17. Основы работы в MATLAB
Управление переменными
whos показать переменные текущей сессии
1 >> whos
2 Name Size Bytes Class A t t r i b u t e s
3
4 a 1x1 8 double
5 ans 1x5 40 double
6 b 1x1 8 double
clear удалить все переменные текущей сессии
clear f1,f2 удалить переменные f1,f2 текущей сессии
Юдинцев В. В. Основы MATLAB 17
18. Основы работы в MATLAB
Ведение “протокола” работы
diary filename – ведет запись на диск всех команд в строках
ввода и полученных результатов в виде текстового файла.
diary off – приостанавливает запись в файл.
diary on – вновь начинает запись в файл.
Юдинцев В. В. Основы MATLAB 18
19. Основы работы в MATLAB
Сохранение сессии
Сохранение значения всех переменных в файл *.mat
save filename – запись в файл filename.mat текущей сессии
(значение всех переменных).
load filename – загрузка значений переменных из файла
filename.
Юдинцев В. В. Основы MATLAB 19
20. Основы работы в MATLAB
Ввод чисел
a=1.25
a=9.3e10 9.3 · 1010
a=2.36e-5 2.36 · 10−5
1 >> a =1.25
2 a = 1.2500
1 >> a =9.3 e10
2 a = 9.3000e+10
1 >> a =2.36e−5
2 a = 2.3600e−05
Юдинцев В. В. Основы MATLAB 20
21. Основы работы в MATLAB
Формат отображения результата
1 >> format short ;
2 >> pi
3 ans=
4 3.1416
1 >> format long ;
2 >> pi
3 ans=
4 3.141592653589793
1 >> format short e ;
2 >> pi
3 ans=
4 3.1416e+00
1 >> format long e ;
2 >> pi
3 ans=
4 3.141592653589793e+00
Юдинцев В. В. Основы MATLAB 21
22. Основы работы в MATLAB
Константы
pi – число π
1 >> pi
2 ans = 3.1416
realmin – минимальное положительное число
1 >> realmin
2 ans = 2.2251e−308
realmax – максимальное положительное число
1 >> realmax
2 ans = 1.7977e+308
Использование имен переменных, совпадающих со встроенными
именами, не рекомендуется
Юдинцев В. В. Основы MATLAB 22
23. Основы работы в MATLAB
Комплексные числа
complex(1,3) – комплексное число 1 + 3i
1 >> a = complex ( 1 , 3 ) ;
i или j – мнимая единица
√
−1
1 >> b = 1+2 i ;
2 >> a * b
3 ans =
4 −5.0000 + 5.0000 i
(1 + 3i) · (1 + 2i) = 1 + 2i + 3i − 6 = −5 + 5i
Юдинцев В. В. Основы MATLAB 23
24. Основы работы в MATLAB
ans – результат вычисления предыдущего действия
Встроенная переменная ans хранит результат последнего действия:
1 >> 2+2
2 ans =
3 4
Эту переменную можно использовать в выражениях:
1 >> ans *5
2 ans =
3 20
Юдинцев В. В. Основы MATLAB 24
25. Основы работы в MATLAB
Типы данных: векторы
[1.2 1.5 1.9 0.5] или [1.2, 1.5, 1.9, 0.5] вектор-строка
[
1.2 1.5 1.9 0.5
]
[1.2; 1.5; 1.9; 0.5] вектор-столбец
1.2
1.5
1.9
0.5
Юдинцев В. В. Основы MATLAB 25
26. Основы работы в MATLAB
Матрицы и скаляры
Каждая переменная в MATLAB – это матрица, поэтому переменная
1 >> a =1;
это матрица размерности 1x1:
1 >> a ( 1 , 1 )
2 ans =
3 1
Юдинцев В. В. Основы MATLAB 26
27. Основы работы в MATLAB
Типы данных: матрицы
A=[1.2 1.5 1.9; 0.5 0.6 0.7; 0.1 1 3]
A =
1.2 1.5 1.9
0.5 0.6 0.7
0.1 1 3
элементы вводятся построчно;
элементы матрицы в строке можно разделять пробелами или
запятыми;
для разграничения строк используются точка с запятой;
элемент матрицы может быть числом или выражением.
Юдинцев В. В. Основы MATLAB 27
29. Операторы
Оператор ()
help ops вывести список всех операторов
(i,j,k,...) – доступ к элементам матрицы. A(i,j) – i строка, j
столбец.
Юдинцев В. В. Основы MATLAB 29
30. Операторы
Оператор ()
A(i) – i элемент вектора (строки или столбца) или i элемент матрицы,
при расположении элементов по столбцам.
1, 4, 7, 2, 5, 8, 3, 6, 9
Юдинцев В. В. Основы MATLAB 30
31. Операторы
Логическое индексирование
Логическое индексирование позволяет выбрать из вектора или
матрицы элементы, удовлетворяющие заданному условию.
1 >> a = sin ( 1 : 0 . 5 : 5 )
2 a =
3 0.8415 0.9975 0.9093 0.5985 0.1411 −0.3508
−0.7568 −0.9775 −0.9589
1 >> ind =a<0
2 ind =
3 0 0 0 0 0 1 1 1 1
1 >> a ( ind )
2 ans =
3 −0.3508 −0.7568 −0.9775 −0.9589
Юдинцев В. В. Основы MATLAB 31
32. Операторы
Скалярное произведение векторов
⃗a ·⃗b = |a||b| cos φ = axbx + ayby + azbz
Вычисление скалярного произведения, используя встроенную
функцию dot:
1 >> a =[1 2 3 ] ;
2 >> b=[4 5 6 ] ;
3 >> dot ( a , b )
4 ans =
5 32
Юдинцев В. В. Основы MATLAB 32
33. Операторы
Скалярное произведение векторов
⃗a ·⃗b = |a||b| cos φ = axbx + ayby + azbz
Вычисление скалярного произведения, используя оператор матричное
умножение:
1 >> a *b ’
2 ans =
3 32
Юдинцев В. В. Основы MATLAB 33
34. Операторы
Матричное умножение
A*B умножение чисел или матриц (матричное умножение)
1 >> a = [1 2 3
2 4 5 6 ] ;
3 >> b = [1 2
4 3 4
5 5 6 ] ;
6 >> a * b
7 ans =
8 22 28
9 49 64
Юдинцев В. В. Основы MATLAB 34
36. Операторы
Возведение в степень
Возведение в степень матрицы или числа
1 >> a =[1 2
2 3 4 ] ;
3 >> a^2
4 ans =
5 7 10
6 15 22
a2
= a · a =
(
1 2
3 4
)
·
(
1 2
3 4
)
=
(
7 10
15 22
)
Юдинцев В. В. Основы MATLAB 36
38. Операторы
Операторы
A' – транспонирование матрицы:
1 >> A=[1.2 0 . 3 ;
2 0.5 2 . 1 ] ;
3 >> A ’
4 ans =
5 1.2000 0.5000
6 0.3000 2.1000
C=A/B – деление C = AB−1
C=A./B – поэлементное деление Ci = Ai/Bi
Юдинцев В. В. Основы MATLAB 38
39. Операторы
Решение системы линейных уравнений
Деление AB выполняет операцию C = A−1
B – решение СЛУ с
матрицей коэффициентов A и матрицей правой части B:
{
1.2x1 + 0.3x2 = 1;
0.5x1 + 2.1x2 = 2.
1 >> A=[1.2 0 . 3 ; 0 . 5 2 . 1 ] ;
2 >> B = [ 1 ; 2 ] ;
3 >> AB
4 ans =
5 0.6329
6 0.8017
Юдинцев В. В. Основы MATLAB 39
40. Операторы
Логические операторы < > = >= <= ~=
Результатом операции над матрицей или вектором является
логический вектор (матрица):
1 >> A = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
2 >> A<5
3 ans=
4 [1 ,1 ,1 ,1 ,0 ,0]
5 >> A==3
6 ans=
7 [0 ,0 ,1 ,0 ,0 ,0]
8 >> A~=5
9 ans=
10 [1 ,1 ,1 ,1 ,0 ,1]
11
Юдинцев В. В. Основы MATLAB 40
41. Операторы
Оператор :
Для создания списков с равноотстоящими значения используется
оператор :
n1:s:n2 n1, n1 + s, n1 + 2s, . . . , nk, nk ≤ n2
Оператор : может использоваться для доступа к элементам
матрицы и вектора
A=1:10 – 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
A(1:2:10) – нечетные элементы вектора: [1,3,5,7,9]
Юдинцев В. В. Основы MATLAB 41
42. Операторы
Оператор :
Для прямоугольной матрицы A:
A(:,k) – k-ый столбец матрицы А
A(k,:) – k-ая строка матрицы А
A(:,[2,4,5]) – второй, четвертый и пятый столбец матрицы А
1 >> a = magic ( 4 )
2 a =
3 16 2 3 13
4 5 11 10 8
5 9 7 6 12
6 4 14 15 1
7 >> a ( [ 1 3 ] , : )
8 ans =
9 16 2 3 13
10 9 7 6 12
Юдинцев В. В. Основы MATLAB 42
43. Операторы
Блоки матриц
A(1:2,3:4) – блок матрицы А, лежащий на пересечении строк 1 и 2,
и столбцов 3 и 4.
1 >> a = magic ( 4 )
2 a =
3 16 2 3 13
4 5 11 10 8
5 9 7 6 12
6 4 14 15 1
7 >> a ( [ 1 2 ] , [ 3 4 ] )
8 ans =
9 3 13
10 10 8
Юдинцев В. В. Основы MATLAB 43
44. Операторы
Удаление строк и столбцов из матрицы
A(3,:)=[] – удалить третью строку из матрицы A
1 >> a = magic ( 4 )
2 a =
3 16 2 3 13
4 5 11 10 8
5 9 7 6 12
6 4 14 15 1
7 >> a ( 3 , : ) = [ ]
8 a =
9 16 2 3 13
10 5 11 10 8
11 4 14 15 1
Юдинцев В. В. Основы MATLAB 44
46. Функции MATLAB
Математические функции
sin, cos, tan, cot, acos, asin, ... – тригонометрические
log, log10, log2, exp, sqrt, nthroot(x,n), ...
sign(a) – знак числа a: -1, 0, +1.
Юдинцев В. В. Основы MATLAB 46
47. Функции MATLAB
Функции округления
К ближайшему к нулю целому:
fix(1.8)=1 но fix(-1.8)=-1
К меньшему целому:
floor(-1.9)=-2 но floor(1.9)=1
К большему целому:
ceil(1.3)=2
К ближайшему целому:
round(1.4)=1, round(-1.5)=-2
Юдинцев В. В. Основы MATLAB 47
48. Функции MATLAB
Функции комплексных чисел
abs(z) – модуль.
angle(z) – аргумент.
conj(z) – комплексно-сопряженное число.
imag(z) – мнимая часть.
real(z) – вещественная часть.
isreal(z) – 1, если z – вещественное число, 0 – мнимое.
Юдинцев В. В. Основы MATLAB 48
49. Функции MATLAB
Специальные матрицы
eye(n), eye(n,m) – единичные матрицы n × n.
1 >> eye ( 3 , 4 )
2 ans =
3 1 0 0 0
4 0 1 0 0
5 0 0 1 0
rand(n), rand(n,m) – матрица псевдослучайных чисел
ones(n,m) – матрица n × m, заполненная единицами
zeros(n,m) – матрица n × m, заполненная нулями
Юдинцев В. В. Основы MATLAB 49
50. Функции MATLAB
Специальные матрицы
magic(n) – квадратная матрица n × n,с одинаковыми суммами
элементов по строкам и столбцам и диагоналям.
1 >> magic ( 3 )
2 ans =
3 8 1 6
4 3 5 7
5 4 9 2
Юдинцев В. В. Основы MATLAB 50
51. Функции MATLAB
Функции над матрицами
diag(A), diag(A,k) – строка, содержащая диагональные
элементы матрицы A, если A - матрица (k=0 для главной
диагонали).
diag(V) – диагональная матрица с элементами вектора V на
диагонали, если V - вектор.
tril(A), tril(A,k) – нижняя треугольная матрица,
построенная по матрице A.
triu(A), triu(A,k) – верхняя треугольная матрица,
построенная по матрице A.
Юдинцев В. В. Основы MATLAB 51
52. Функции MATLAB
Функции над матрицами
Параметр k в функциях diag(A,k), tril(A,k), triu(A,k)
Юдинцев В. В. Основы MATLAB 52
53. Функции MATLAB
Функции над векторами
cross(a,b) – векторное произведение;
dot(a,b) – скалярное произведение;
sum(a) – сумма элементов вектора;
sort(a) – сортировка вектора; если a – матрица, то
производится сортировка элементов в столбцах.
Другой вариант вызова [res,i]=sort(a). Переменная i
содержит индексы элементов исходного вектора a,
расположенные по порядку сортировки.
Юдинцев В. В. Основы MATLAB 53
54. Функции MATLAB
Сумма элементов вектора или матрицы
sum(a)
Сумма элементов вектора:
1 >> a =[1 2 3 4 ] ;
2 >> sum ( a )
3 ans=
4 10
5
Сумма элементов матрицы:
1 >> a =[1 2;
2 3 4 ] ;
3 >> sum ( a )
4 ans=
5 4 6
6
Юдинцев В. В. Основы MATLAB 54
55. Функции MATLAB
Сумма элементов матрицы
Сумма элементов матрицы по заданному измерению:
1 >> a =[1 2;
2 3 4 ] ;
3 >> sum ( a , 2 )
4 ans =
5 3
6 7
7
Юдинцев В. В. Основы MATLAB 55
56. Функции MATLAB
Сортировка
sort(a) – сортировка вектора или матрицы. Если a – матрица, то
производится сортировка элементов в столбцах (по первому
измерению):
1 >> a = magic ( 3 )
2 a =
3 8 1 6
4 3 5 7
5 4 9 2
6 >> s o r t ( a )
7 ans =
8 3 1 2
9 4 5 6
10 8 9 7
11
Юдинцев В. В. Основы MATLAB 56
57. Функции MATLAB
Сортировка
Вторым аргументом функции sort может быть номер измерения, по
которому должна выполняться сортировка:
1 >> a = magic ( 3 )
2 a =
3 8 1 6
4 3 5 7
5 4 9 2
6 >> s o r t ( a , 2 )
7 ans =
8 1 6 8
9 3 5 7
10 2 4 9
11
Юдинцев В. В. Основы MATLAB 57
58. Функции MATLAB
Сортировка
[res,i]=sort(a). i содержит индексы элементов исходного
вектора a, расположенные по порядку сортировки.
1 >> a = magic ( 3 )
2 a =
3 8 1 6
4 3 5 7
5 4 9 2
6 >> [ res , i ] = s o r t ( a )
7 res =
8 3 1 2
9 4 5 6
10 8 9 7
11 i =
12 2 1 3
13 3 2 1
14 1 3 2
Юдинцев В. В. Основы MATLAB 58
59. Функции MATLAB
Битовые функции
bitand(a,b) – поразрядное И
1 >> bitand ( 5 , 1 )
2 ans =
3 1
bitor(a,b) – поразрядное ИЛИ
1 >> b i t o r ( 4 , 2 )
2 ans =
3 6
bitset(a,bit,v) – установка бита в позиции bit числа a; v = 1 или
0
1 >> b i t s e t ( 5 , 3 , 0 )
2 ans =
3 1
Юдинцев В. В. Основы MATLAB 59
60. Функции MATLAB
Преобразование числа к другому основанию
dec2bin(a) – строка с двоичным представлением положительного
числа a
1 >> dec2bin ( 5 )
2 ans =
3 101
4
dec2hex(a) – строка с шестнадцатеричным представлением
положительного числа a
1 >> dec2hex (255)
2 ans =
3 FF
4
Юдинцев В. В. Основы MATLAB 60
61. Функции MATLAB
Преобразование числа к другому основанию
bin2dec(a) – преобразование строки с двоичным представлением
числа к десятичной системе a
1 >> bin2dec ( ’ 111 ’ )
2 ans =
3 7
4
hex2dec(a) – преобразование строки с шестнадцатеричным
представлением числа к десятичной системе a
1 >> hex2dec ( ’ F1 ’ )
2 ans =
3 241
4
Юдинцев В. В. Основы MATLAB 61
62. Функции MATLAB
Работа с множествами
intersect(A, B) – пересечение векторов А и В как множеств:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> i n t e r s e c t ( a , b )
4 ans =
5 1 7
ismember(A, S) – содержит ли А элементы из S:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> ismember ( a , b )
4 ans =
5 1 0 0 1 0 1 0 1
Юдинцев В. В. Основы MATLAB 62
63. Функции MATLAB
Работа с множествами
setdiff(A, B) – элементы, входящие в А, но отсутствующие в В
(A-B):
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> s e t d i f f ( a , b )
4 ans =
5 2 3 8
setxor(A, B) – элементы, не входящие в результат пересечения
множеств А и В:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> s e t d i f f ( a , b )
4 ans =
5 2 3 5 6 8
Юдинцев В. В. Основы MATLAB 63
64. Функции MATLAB
Работа с множествами
union(A, B) – объединение множеств:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> b = [7 1 5 6 ] ;
3 >> union ( a , b )
4 ans =
5 1 2 3 5 6 7 8
unique(A) – элементы вектора А без повторений:
1 >> a = [1 2 3 7 8 7 3 1 ] ;
2 >> unique ( a )
3 ans =
4 1 2 3 7 8
Юдинцев В. В. Основы MATLAB 64
67. Функции пользователя
inline-функция
1 >> f1 = i n l i n e ( ’ x1^2+x2^2 ’ , ’ x1 ’ , ’ x2 ’ ) ;
2 >> f1 ( 4 , 2 )
3 ans =
4 20
Переменные из рабочей области недоступны.
Юдинцев В. В. Основы MATLAB 67
68. Функции пользователя
Анонимная функция
1 >> f = @ ( x1 , x2 ) x1^2+x2 ^2;
2 >> f ( 4 , 2 )
3 ans =
4 20
Переменные из рабочей области доступны, но рассматриваются как
константы:
1 >> a =2;
2 >> f = @ ( x1 ) a * x1 ;
3 >> f ( 1 )
4 ans =
5 2
6 >> a =1; f ( 1 )
7 ans =
8 2
Юдинцев В. В. Основы MATLAB 68
70. Ячейки
Ячейки
Массивы ячеек (cells) могут хранить данные различных типов: числа,
строки, структуры, массивы ячеек.
1 >> data {1} = ’Текст ’
2 data =
3 ’Текст ’
4 >> data {2} = 1
5 data =
6 ’Текст ’ [ 1 ]
7 >> data {5} = [1 2 3]
8 data =
9 ’Текст ’ [ 1 ] [ ] [ ] [1 x3 double ]
Юдинцев В. В. Основы MATLAB 70
71. Ячейки
Доступ к элементам массива ячеек
1 >> data {1}
2 ans =
3 Текст
4
5 >> data {2}
6 ans =
7 1
8
9 >> data {5}
10 ans =
11 1 2 3
Юдинцев В. В. Основы MATLAB 71
72. Ячейки
Функция cell
Формирование пустой матрицы ячеек
1 >> a = c e l l ( 3 , 4 )
2 a =
3 [ ] [ ] [ ] [ ]
4 [ ] [ ] [ ] [ ]
5 [ ] [ ] [ ] [ ]
Присвоение значения элементу новой матрицы
1 >> a {2 ,3} = ’элемент 2 ,3 ’
2 a =
3 [ ] [ ] [ ] [ ]
4 [ ] [ ] ’элемент 2 ,3 ’ [ ]
5 [ ] [ ] [ ] [ ]
Юдинцев В. В. Основы MATLAB 72
73. Ячейки
Функции для работы с ячейками
Преобразование числовой матрицы в матрицу ячеек
1 >> a=magic ( 5 )
2 a =
3 17 24 1 8 15
4 23 5 7 14 16
5 4 6 13 20 22
6 10 12 19 21 3
7 11 18 25 2 9
1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] )
2 b =
3 [2 x2 double ] [2 x1 double ] [2 x2 double ]
4 [3 x2 double ] [3 x1 double ] [3 x2 double ]
Юдинцев В. В. Основы MATLAB 73
74. Ячейки
Функции для работы с ячейками
Преобразование числовой матрицы в матрицу ячеек
1 >> a=magic ( 5 )
2 a =
3 17 24 1 8 15
4 23 5 7 14 16
5 4 6 13 20 22
6 10 12 19 21 3
7 11 18 25 2 9
1 >> b = mat2cell ( a , [ 2 3 ] , [ 2 1 2 ] )
2 b =
3 [2 x2 double ] [2 x1 double ] [2 x2 double ]
4 [3 x2 double ] [3 x1 double ] [3 x2 double ]
Юдинцев В. В. Основы MATLAB 73
77. Структуры
Структура
Структура – это элемент данных, который может содержать
разнотипные поля:
имя = struct('поле1',значение,'поле2',значение,...)
Структура, описывающая параллелепипед:
1 box= s t r u c t ( ’ height ’ , 100 , ’ width ’ , 10 , ’ depth ’ , 5)
2 box=
3 height : 100
4 width : 10
5 depth : 5
Юдинцев В. В. Основы MATLAB 76
78. Структуры
Доступ к полям структуры
Считывание значения поля
1 >> box . height
2 ans =
3 100
Имя поля может быть задано строкой
1 >> box . ( ’ height ’ )
2 ans =
3 100
Юдинцев В. В. Основы MATLAB 77
79. Структуры
Список полей структуры
1 >> names = fieldnames ( box )
2 names =
3 ’ height ’
4 ’ width ’
5 ’ depth ’
6 ’ mass ’
Юдинцев В. В. Основы MATLAB 78
81. Структуры
Добавление поля
Для добавления поля к структуре необходимо присвоить значение
новому полю, как существующему:
1 >> box . mass=5
2 box =
3 height : 20
4 width : 10
5 depth : 5
6 mass : 5
Юдинцев В. В. Основы MATLAB 80
84. Задачи
Задание 1
Напишите кратчайшее однострочное выражение для построения
квадратной матрицы вида
1 2 3 4 . . . n
1 2 3 4 . . . n
. . . . . . . . . . . . . . . n
1 2 3 4 . . . n
Юдинцев В. В. Основы MATLAB 83
85. Задачи
Задание 2
Напишите выражение, определяющее индекс элемента вектора с
наименьшим отклонением от среднего значения элементов вектора P
i : min |Pi − m(P)|
Например, для
P = [8, 1, 2, 2, 0, 3]
ответом будет 6, т.е. шестой элемент массива находится ближе всего к
среднему значению элементов массива. Среднее значение
определяется при помощи функции mean
1 >> P=[8 1 2 2 0 3 ] ;
2 >> mean ( P )
3 ans = 2.6667
4 >>
Юдинцев В. В. Основы MATLAB 84
86. Задачи
Задание 3
Напишите код, который находит матрицу B, отличающуюся от матрицы
A перестановкой столбцов по возрастанию суммы элементов столбца.
A =
2 3 5
4 1 9
3 0 2
⇒ B =
5 2 3
9 4 1
2 3 0
5 + 9 + 2 > 2 + 4 + 3 > 3 + 1 + 0
Юдинцев В. В. Основы MATLAB 85
87. Задачи
Задание 4
В матрице A записаны координат точек на плоскости: в первом
столбце – координаты x, во втором столбце – y:
A =
x1 y1
x2 y2
x3 y3
. . . . . .
xn yn
Постройте матрицу B, которая составлена из строк матрицы A так, что
с увеличением номера строки с координатами точки растёт расстояние
от этой точки до начала координат.
Юдинцев В. В. Основы MATLAB 86
88. Задачи
Задание 5
1
2
4 3
Структура графа описана при помощи списка
смежности, записанного в виде матрицы:
L =
1 2
2 4
. . . . . .
3 4
,
В каждой строке матрицы L записываются индексы
вершин, связанные дугой.
Постройте матрицу смежности графа S, элемент которой
– sij отличен от нуля, только если вершины i и j
смежные, т. е. соединены дугой. Остальные элементы
матрицы S равны нулю.
Юдинцев В. В. Основы MATLAB 87