programming with matlab - mathworks = 12 while (x < 100) x = x+1 if ... digital electronics vhdl,...

26
1 © 2014 The MathWorks, Inc. Programming with MATLAB Paolo Fabbri Senior Engineer

Upload: lekhue

Post on 20-Mar-2018

219 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

1© 2014 The MathWorks, Inc.

Programming with MATLAB

Paolo Fabbri

Senior Engineer

Page 2: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

2

MATLAB Application Development Landscape

Prototyping Programming Deployment

Page 3: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

3

MATLAB Application Development Landscape

Prototyping Programming Deployment

Page 4: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

4

MATLAB Application Development Landscape

Prototyping Programming Deployment

Page 5: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

5

Today Focus

Prototyping Programming Deployment

Object-Oriented Programming

Unit Test Framework

Source Control Integration

Programming Interfaces

Page 6: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

6

What is a program?

Page 7: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

7

What is a program?

x = 12

while (x < 100)

x = x+1

if (x == 23)

disp('Hello')

end

end

Code

Data

x = 12

while (x < 100)

x = x+1

if (x == 23)

disp('Hello')

end

end

Assignment

Looping Test

Increment

Test to Act

Take Action

End

End

Operations

Page 8: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

8

Range of Programming Techniques

Operations

Data

function

script

command line

value

variable

structure

class

(properties)

(methods)

Page 9: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

9

Classes and Objects

People

Properties

•FirstName

•LastName

•BirthDate

•Address

•Contacts

Methods

•getFullName

•getAge

Paolo

Properties

•FirstName = Paolo

•LastName = Fabbri

•BirthDate = ...

•Address = ...

•Contacts = ...

Methods

•getFullName

•getAge

Davide

Properties

•FirstName = Davide

•LastName = Ferraro

•BirthDate = ...

•Address = ...

•Contacts = ...

Methods

•getFullName

•getAge

Page 10: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

10

Object-Oriented Programming Basics

properties

encapsulate object data

methods

implement the object behavior

events and listeners

implement objects communication

inerithance

allows composition and reusability

Employee

Properties

•Salary

•Group

•Manager

Methods

•showInOrgChart

People

Properties

•FirstName

•LastName

•BirthDate

•Address

•Contacts

Methods

•getFullName

•getAge

Page 11: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

11

Object-Oriented Programming with MATLAB

properties

encapsulate object data

methods

implement the object behavior

events and listeners

implement objects communication

inerithance

allows composition and reusability

Page 12: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

12

Case Study: Team Resources Assignment

Resource Manager

Resources

Submit Task

Response

Clients

Page 13: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

13

MATLAB Unit Test Framework

Page 14: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

14

Application Development Process

Te

st &

Ve

rificatio

n

Implementation

Research & Design

Explore and discover

Gain insight into problem

Evaluate options, trade-offs

Test

Design

Elaborate

Embedded software and

digital electronics

VHDL, Verilog

C, C++

Desktop or Web

Deployment

C, C++

.exe.dll

Requirements

Page 15: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

15

xUnit Patterns

Many testing Best Practices are emerging built around xUnit

Consistent nomenclature

Consistent architecture

Platform for robust testing methodologies

Setup/Teardown capabilities

Page 16: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

16

MATLAB Unit Test Framework

Write, run and analyze tests for MATLAB programs

Write in function form or xUnit-style class form

Run tests individually or grouped into a test suite

Analyze values using qualification functions

Setup and teardown to pretest and restore a state

Advanced testing capabilities

Page 17: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

17

Types of Qualifications

Type Action

Verify Fail & Continue Execution

Assert Fail & Halt Current Test, Continue to Next

Fatal assert Fail & Halt Framework Execution

Assume Filter Current Test

Page 18: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

18

Source Control Integration

Page 19: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

19

Source Control Integration in MATLAB

Stay inside MATLAB for development workflow

GIT and Subversion Integration in Current Folder

Integrated with tools designed for MathWorks file types (i.e. compare and merge)

Page 20: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

20

Programming Interfaces

Page 21: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

21

Calling MATLAB from Other Languages

Engine interface• C/C++

• Fortran

• Python®

Automation server• COM

• .NET

C/C++

COM

COM.NET

Fortran

Python

Page 22: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

22

Calling Other Languages from MATLAB

MATLAB C and Fortran API>> mex mycode.c

MATLAB interface to C shared library>> loadlibrary(‘foo', ‘foo.h')

MATLAB COM client support>> actxserver('Excel.Application')

MATLAB .NET interface>> NET.addAssembly('System.Speech')

MATLAB Java interface>> java.lang.String('boo')

MATLAB Python interface>> py.textwrap.wrap('Text');

C/C++

COM

.NET

Fortran

Python

Java

Page 23: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

23

Target-Specific Implementation

and

Large Scale Distribution

Page 24: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

24

MATLAB Application Development Landscape

Prototyping Programming Deployment

Page 25: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

25

MATLAB Application Development Landscape

Prototyping Programming Deployment

Page 26: Programming with MATLAB - MathWorks = 12 while (x < 100) x = x+1 if ... digital electronics VHDL, Verilog C, C++ ... Write in function form or xUnit-style class form

26

Thank You!