1. Trang chủ
  2. » Cao đẳng - Đại học

Slide matlab chapter 3 programming

112 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 112
Dung lượng 650,53 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mở đầuTiếp cận lập trình Matlab Một thủ tục chuẩn của việc sử dụng lập trình MatLab cho việc giải quyết một bài toán kỹ thuật bao gồm các bước: 1 Phân tích bài toán và xác định thuật giả

Trang 1

Viện Toán ứng dụng và Tin học, ĐHBK Hà Nội

Hà Nội, tháng 8 năm 2015

Trang 2

5 Điều khiển luồng

6 Vector hóa (Vectorization)

7 Quản lý các biến Input, Output

8 Tính giá trị hàm một cách gián tiếp

9 Chú thích

10 Gỡ lỗi

11 Một số kinh nghiệm trong lập trình Matlab

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 3

Mở đầu

Tiếp cận lập trình Matlab

Một thủ tục chuẩn của việc sử dụng lập trình MatLab cho việc giải quyết một bài toán

kỹ thuật bao gồm các bước:

1 Phân tích bài toán và xác định thuật giải (trên giấy)

2 Phác thảo các công thức tính toán (trên giấy)

3 Viết chương trình MatLab (M-file) sử dụng MATLAB Editor/Debugger

4 Kiểm nghiệm và sửa lỗi

5 Giải bài toán

Trang 4

Mở đầu

Tiếp cận lập trình Matlab

Một thủ tục chuẩn của việc sử dụng lập trình MatLab cho việc giải quyết một bài toán

kỹ thuật bao gồm các bước:

1 Phân tích bài toán và xác định thuật giải (trên giấy)

2 Phác thảo các công thức tính toán (trên giấy)

3 Viết chương trình MatLab (M-file) sử dụng MATLAB Editor/Debugger

4 Kiểm nghiệm và sửa lỗi

5 Giải bài toán

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 5

Mở đầu

Tiếp cận lập trình Matlab

Một thủ tục chuẩn của việc sử dụng lập trình MatLab cho việc giải quyết một bài toán

kỹ thuật bao gồm các bước:

1 Phân tích bài toán và xác định thuật giải (trên giấy)

2 Phác thảo các công thức tính toán (trên giấy)

3 Viết chương trình MatLab (M-file) sử dụng MATLAB Editor/Debugger

4 Kiểm nghiệm và sửa lỗi

5 Giải bài toán

Trang 6

Mở đầu

Tiếp cận lập trình Matlab

Một thủ tục chuẩn của việc sử dụng lập trình MatLab cho việc giải quyết một bài toán

kỹ thuật bao gồm các bước:

1 Phân tích bài toán và xác định thuật giải (trên giấy)

2 Phác thảo các công thức tính toán (trên giấy)

3 Viết chương trình MatLab (M-file) sử dụng MATLAB Editor/Debugger

4 Kiểm nghiệm và sửa lỗi

5 Giải bài toán

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 7

Mở đầu

Tiếp cận lập trình Matlab

Một thủ tục chuẩn của việc sử dụng lập trình MatLab cho việc giải quyết một bài toán

kỹ thuật bao gồm các bước:

1 Phân tích bài toán và xác định thuật giải (trên giấy)

2 Phác thảo các công thức tính toán (trên giấy)

3 Viết chương trình MatLab (M-file) sử dụng MATLAB Editor/Debugger

4 Kiểm nghiệm và sửa lỗi

5 Giải bài toán

Trang 8

Mở đầu

Các chương trình MatLab được chứa trong các ”m-files”

â Là các file văn bản thông thường, không phải file nhị phân

â Các file phải có đuôi ”.m”

Các ”m-file’ phải được đặt trong đường dẫn hiện thời trong cửa sổ CommandWindow

â MatLab quản lý đường dẫn trong của nó

â Đường dẫn là một danh sách các thư mục mà MatLab sẽ tìm kiếmmột ”m-file” để thực thi

â Một chương trình có thể tồn tại và không có lỗi nhưng có thể vẫnkhông chạy nếu MatLab không tìm thấy nó

â Có thể thay đổi đường dẫn bằng cách dùng các lệnh path, addpath

và rmpath

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 9

5 Điều khiển luồng

6 Vector hóa (Vectorization)

7 Quản lý các biến Input, Output

8 Tính giá trị hàm một cách gián tiếp

9 Chú thích

10 Gỡ lỗi

11 Một số kinh nghiệm trong lập trình Matlab

Trang 10

Các thủ tục (Script Files)

Không thực sự là các chương trình

â Không có các dữ liệu input/output

â Các biến thủ tục là một phần của không gian làm việc

Hữu ích cho các công việc cố định

Hữu ích như là một công cụ khi tạo các tài liệu cho các bài tập ở nhà

Lời khuyên

Các hàm (functions) có rất nhiều tiện ích so với các thủ tục (scripts)

=⇒ Luôn luôn sử dụng hàm thay cho thủ tục

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 11

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Tất cả các biến được tạo ra trong thủ tục sẽ được thêm vào không gian làm việc Điềunày sẽ có ảnh hưởng đáng kể bởi vì

Các biến đã tồn tại trong không gian làm việc có thể bị viết chồng lên

Sự thực thi của các thủ tục có thể bị ảnh hưởng bởi trạng thái của các biến trongkhông gian làm việc

Ví dụ 1

Thủ tục easyplot

% Load

D=load(’xy.dat’); % D is a matrix with two columns

x=D(:,1); y=D(:,2); % x is the first column, y is second one

xlabel(’x axis’)

ylabel(’y axis’)

title(’Plot of generic x-y data set’)

Trang 13

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi

Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

Trang 14

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi

Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 15

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi

Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

Trang 16

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi

Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 17

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi.Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

Trang 18

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi.Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 19

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi.Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

Trang 20

Các thủ tục (Script Files)

Tác dụng phụ của các thủ tục

Nói chung, các tác dụng phụ:

Diễn ra khi một chương trình thay đổi các biến ngoại trừ input/output

Có thể gây các lỗi mà rất khó để phát hiện ra

Không phải lúc nào cũng tránh được

Các tác dụng phụ của thủ tục

Tạo ra và thay đổi các biến trong không gian làm việc

Không đưa ra khuyến cáo rằng các biến trong không gian làm việc đã bị thay đổi.Bởi vì các thủ tục có các tác dụng phụ, tốt hơn là gói gọn tất cả trong hàm ”m-file”

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 21

5 Điều khiển luồng

6 Vector hóa (Vectorization)

7 Quản lý các biến Input, Output

8 Tính giá trị hàm một cách gián tiếp

9 Chú thích

10 Gỡ lỗi

11 Một số kinh nghiệm trong lập trình Matlab

Trang 22

Các dữ liệu đầu vào cho phép cùng một thủ tục tính toán (cùng thuật toán) ápdụng với các dữ liệu khác nhau Do đó, các hàm m-file có thể dùng lại nhiều lần.Các hàm có thể gọi các hàm khác

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 23

Các dữ liệu đầu vào cho phép cùng một thủ tục tính toán (cùng thuật toán) ápdụng với các dữ liệu khác nhau Do đó, các hàm m-file có thể dùng lại nhiều lần.Các hàm có thể gọi các hàm khác

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp

Trang 24

Các dữ liệu đầu vào cho phép cùng một thủ tục tính toán (cùng thuật toán) ápdụng với các dữ liệu khác nhau Do đó, các hàm m-file có thể dùng lại nhiều lần.Các hàm có thể gọi các hàm khác

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 25

Các dữ liệu đầu vào cho phép cùng một thủ tục tính toán (cùng thuật toán) ápdụng với các dữ liệu khác nhau Do đó, các hàm m-file có thể dùng lại nhiều lần.Các hàm có thể gọi các hàm khác

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp

Trang 26

Các dữ liệu đầu vào cho phép cùng một thủ tục tính toán (cùng thuật toán) ápdụng với các dữ liệu khác nhau Do đó, các hàm m-file có thể dùng lại nhiều lần.Các hàm có thể gọi các hàm khác

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 27

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp.

Trang 28

Các thủ tục riêng có thể gói vào trong một hàm Các tiếp cận này cho phép pháttriển lời giải cấu trúc của các bài toán phức tạp.

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 29

Các hàm m-file

Cú pháp

Dòng đầu tiên của hàm ”m-file” có dạng

function [outArgs]=funName(inArgs)

trong đó outArgs là danh sách các biến đầu ra, được đặt trong [ ]

Các biến trong outArgs được cách nhau bởi dấu ”,”

[ ] là tùy chọn nếu chỉ có 1 tham số đầu ra

Hàm mà không có outArgs vẫn là hợp lệ

và danh sách các biến đầu vào inArgs được đặt trong ( )

Các biến trong inArgs được cách nhau bởi dấu ”,”

Hàm mà không có inArgs vẫn là hợp lệ

Có thể kiểm tra tính hợp lệ của tên hàm bằng cách dùng lệnh

>> isvarname funName

Trang 30

Các hàm m-file

Input và Output

twosum.m: two inputs, no output

function twosum(x,y)

% twosum Add two matrices and print the result

% two inputs, no output

x+y

threesum.m: three inputs, one output

function s=threesum(x,y,z)

% threesum Add three matrices and return the result

% three inputs, one output

s=x+y+z;

addmult.m: two inputs, two outputs

function [s,p]=addmult(x,y)

% addmult Compute sum and product of two matrices

% two inputs, two outputs

s=x+y;

p=x*y;

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 32

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 33

Các hàm m-file

Tóm tắt về các tham số Input và Output

Các giá trị được kết hợp thông qua các dữ liệu input và output

Các biến được định nghĩa trong một hàm là biến địa phương Các hàm khác vàmôi trường cửa sổ lệnh sẽ không ”nhìn” được chúng

Số lượng các biến trả về nên trùng với số lượng các biến output trong hàm

Trang 34

Các hàm m-file

Tóm tắt về các tham số Input và Output

Các giá trị được kết hợp thông qua các dữ liệu input và output

Các biến được định nghĩa trong một hàm là biến địa phương Các hàm khác vàmôi trường cửa sổ lệnh sẽ không ”nhìn” được chúng

Số lượng các biến trả về nên trùng với số lượng các biến output trong hàm

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 35

Các hàm m-file

Tóm tắt về các tham số Input và Output

Các giá trị được kết hợp thông qua các dữ liệu input và output

Các biến được định nghĩa trong một hàm là biến địa phương Các hàm khác vàmôi trường cửa sổ lệnh sẽ không ”nhìn” được chúng

Số lượng các biến trả về nên trùng với số lượng các biến output trong hàm

Trang 36

5 Điều khiển luồng

6 Vector hóa (Vectorization)

7 Quản lý các biến Input, Output

8 Tính giá trị hàm một cách gián tiếp

9 Chú thích

10 Gỡ lỗi

11 Một số kinh nghiệm trong lập trình Matlab

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 37

Nhập, xuất dữ liệu

Các hàm nhập dữ liệu

Hàm input có thể được sử dụng để nhập dữ liệu từ bàn phím

Các tham số đầu vào của các hàm được ưa dùng hơn

Các hàm xuất dữ liệu

Hàm disp có thể được sử dụng cho các kết quả đơn giản

Dùng hàm fprintf cho các dữ liệu định dạng trước

Trang 38

Nhập, xuất dữ liệu

Xuất dữ liệu với disp và fprintf

Xuất dữ liệu trong cửa sổ lệnh được thực hiện với hàm disp hoặc fprintf Nếu muốnghi dữ liệu vào file bắt buộc phải dùng hàm fprintf

Trang 40

>> s=’Have a nice day’; disp(s)

Have a nice day

>> t=’You are using Matlab 7.10.0’;

>> disp([s;t])

??? Error using ==> vertcat

CAT arguments dimensions are not consistent

>> disp(char(s,t))

Have a nice day

You are using Matlab 7.10.0

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 43

??? Error using ==> minus

Matrix dimensions must agree

Trang 45

??? Error using ==> horzcat

CAT arguments dimensions are not consistent

Trang 46

Nhập, xuất dữ liệu

Sử dụng num2str với disp

Thay vào đó, sử dụng hai lệnh disp để hiển thị cột của các vector hay ma trận

Trang 48

Nhập, xuất dữ liệu

Hàm fprintf

Cú pháp

fprintf(outFormat, outVariables)

fprintf(filehandle, outFormat, outVariables)

sử dụng outFormat để chuyển outVariables thành các xâu được in ra Trong dạng đầutiên, kết quả sẽ hiển thị trong cửa sổ lệnh Trong dạng thứ hai, kết quả sẽ được lưu vàofile được tham chiếu bởi fileHandle

Trang 49

Nhập, xuất dữ liệu

Hàm fprintf

Thành phần outFormat định rõ cách các outVariables được chuyển thành và hiển thị.Xâu outFormat có thể chứa bất kỳ một ký tự nào Nó cũng phải chứa một mã chuyểnđổi cho mỗi outVariables Các mã chuyển đổi cơ bản được cho dưới bảng sau:

\n chèn một dòng mới sau xâu kết quả

\t chèn một tab sau xâu kết quả

Trang 50

sqrt(2e-11) 0.0000 4.472e-06 4.47214e-06 4.472136e-06

sqrt(2e11) 447213.5955 4.472e+05 447214 4.472136e+05

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 53

Nhập, xuất dữ liệu

Hàm fprintf

Xuất dữ liệu ra file

Để ghi dữ liệu ra file cần phải tạo ra một fileHandle với lệnh fopen Tất cả tác dụngcủa các định dạng cũng như vector hóa đều có thể áp dụng

Trang 54

5 Điều khiển luồng

6 Vector hóa (Vectorization)

7 Quản lý các biến Input, Output

8 Tính giá trị hàm một cách gián tiếp

9 Chú thích

10 Gỡ lỗi

11 Một số kinh nghiệm trong lập trình Matlab

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 55

Điều khiển luồng

Để có thể thực thi một thuật toán, một ngôn ngữ lập trình cần có các cấu trúc điềukhiển

Các cấu trúc lặp (Looping or Iteration)

Các cấu trúc điều kiện: rẽ nhánh (Branching)

Ngày đăng: 27/06/2021, 16:36