POLYVALM POLYVALM Ước lượng đa thức ma trận Nếu V là vectơ có các phần tử là các hệ số của đa thức, thì POLYVALMV,X là giá trị của đa thức tại đối số ma trận X.. POLYDER POLYDER Đạo hàm
Trang 1POLYVALM
POLYVALM Ước lượng đa thức ma trận
Nếu V là vectơ có các phần tử là các hệ số của đa thức, thì POLYVALM(V,X) là giá trị của
đa thức tại đối số ma trận X Xem POLYVAL với cách tính đa thức trong trường hợp đối số thường hoặc mảng
RESIDUE
RESIDUE Tính khai triển từng phần hay thặng dư
[R,P,K] = RESIDUE(B,A) tìm thặng dư, cực và hướng của khai triển từng phần của chia đa thức, B(s) và A(s) Nếu không có nghiệm kép,
B(s) R(1) R(2) R(n)
= - + - + + - + K(s)
A(s) s - P(1) s - P(2) s - P(n)
Các vectơ B và A là các hệ số của các đa thức theo lũy thừa thoái của s Thặng dư trả về trong vectơ cột R, các vị trí cực trong vectơ cột
P, và các hướng trong vectơ dòng K Số các cực là n = length(A)-1 = length(R) = length(P)
Vectơ hệ số hướng là rỗng nếu length(B) < length(A); ngược lại thì
length(K) = length(B)-length(A)+1
Nếu P(j) = = P(j+m-1) là một cực của multplicity m, thì khai triển bao gồm các hạng tử thuộc dạng
R(j) R(j+1) R(j+m-1)
_ + + + -
s - P(j) (s - P(j))^2 (s - P(j))^m
[B,A] = RESIDUE(R,P,K), với 3 đối số nhập và 2 đối số xuất, chuyển khai triển phân số từng phần thành các đa thức với các hệ số trong B và A
Khuyến cáo: Về mặt số, khai triển phân số các
đa thức là biểu hiện của một bài toán yếu Nếu đa thức thức mẫu, A(s), gần đa thức có nghiệm bội, thì các thay đổi nhỏ trong số liệu, kể cả sai số, có thể làm thay đổi lớn trong các cực và thặng dư kết quả Các công thức của bài toán làm cho việc dùng cách biểu diễn cực trống hoặc 0 là thích hợp hơn
POLYFIT
POLYFIT Khớp đường cong đa thức
POLYFIT(x,y,n) tìm các hệ số của đa thức p(x) bậc
n để khớp số liệu, p(x(i)) ~= y(i), theo phương pháp bình phương bé nhất
[p,S] = POLYFIT(x,y,n) trả về các hệ số đa thức
Trang 2hằng, thì POLYVAL sẽ cho ra các giới hạn sai số chứa ít nhất 50% của dự đoán
Trang 3POLYDER
POLYDER Đạo hàm đa thức
POLYDER(P) trả về đạo hàm của đa thức có các hệ số là các phần tử của vectơ P POLYDER(A,B) trả về đạo hàm của đa thức A*B [Q,D] = POLYDER(B,A) trả về đạo hàm của đa thức thương B/A, biểu diễn thành Q/D
CONV
Tích chập và nhân đa thức
C = CONV(A, B) tích chập các vectơ A và B Vectơ kết quả có độ dài LENGTH(A)+LENGTH(B)-1 Nếu A và B là các vectơ là các hệ số của đa thức, thì tích chập chúng tương đương nhân hai đa thức
DECONV
Tách chập và chia đa thức
[Q,R] = DECONV(B,A) tách chập các A ra B Kết quả trả về trong vectơ Q và phần dư trong vectơ R để
B = conv(Q,A) + R
Nếu A và B là các vectơ là các hệ số của đa thức, thì tách chập tương đương với chia đa thức Kết quả chí B cho A được thương Q và dư R
Nội suy số liệu
INTERP1
INTERP1 nội suy số liệu 1 chiều (tra cứu bảng)
YI = INTERP1(X,Y,XI) trả về vectơ YI chứa các phần tử tương ứng với các phần tử trong XI và xác định bởi phép nội suy bên trong các vectơ X và Y
Phép nội suy cùng thao tác như " tra cứu bảng
" Mô tả trong các số hạng " tra cứu bảng ",
"bảng" là [X,Y] và INTERP1 " các tra cứu" là các phần tử của XI trong X, và, dựa vào các vị trí của chúng, các giá trị trả về YI nội suy bên trong các phần tử của Y
INTERP1 thực hiện xuất nhiều giá trị tra cứu bảng nếu Y là ma trận Nếu Y là ma trận có length(X) dòng, và N cột, thì INTERP1 trả về ma trận YI cỡ length(XI)xN chứa nhiều kết quả xuất của tra cứu bảng
Ngầm định, INTERP1 dùng nội suy tuyến tính
YI = INTERP1(X,Y,XI,'method') chỉ định các phương pháp khác
Các phương pháp có thể là:
'linear' - nội suy tuyến tính
'spline' - nội suy spline lập phương
'cubic' - nội suy lập phương
Tất cả các phương pháp nội suy đòi hỏi X phải là đơn điệu Phương pháp lập phương 'cubic' cũng đòi hỏi các điểm trong X phải cách đều
Trang 4x = 0:10; y = sin(x); xi = 0:.25:10; yi =
interp1(x,y,xi); plot(x,y,'o',xi,yi)
INTERP2
INTERP2 nội suy số liệu 2 chiều (tra cứu bảng)
ZI = INTERP2(X,Y,Z,XI,YI) trả về ma trận ZI chứa
các phần tử tương ứng với các phần tử của XI
và YI và xác định bằng phép nội suy bên trong
hàm 2 chiều mô tả bởi các ma trận X, Y, và Z
Các giá trị bên ngoài miền trả về NaN X có
thể là một vectơ dòng, trong trường hợp này
được giả thiết áp dụng vào các cột của Z
Tương tự, Y có thể là vectơ cột và các phần tử
của nó được giả thiết áp dụng qua các dòng
của Z
Phép nội suy cùng thao tác như "table lookup" Mô
tả trong các số hạng " tra cứu bảng ", "bảng"
là TAB = [NaN,Y; X,Z] và INTERP2 "các tra cứu "
là các phần tử của XI trong X, YI trong Y, và,
dựa vào vị trí của chúng, các giá trị trả về ZI
nội suy bên trong các phần tử của Z
Ngầm định, INTERP2 dùng phép nội suy song tuyến
tính
ZI = INTERP2(X,Y,Z,XI,YI,'method') chỉ định phương
pháp khác Các phương pháp có thể là:
'linear' or 'bilinear' - nội suy song tuyến tính
'cubic' or 'bicubic' - nội suy song lập phương
'nearest' - nội suy cận gần nhất
Tất cả các phép nội suy đều đòi hỏi X và Y
là đơn điệu và lưới vuông (nếu chúng được tạo
ra bằng cách dùng MESHGRID) Khoảng cách biến
đổi được xử lý bằng ánh xạ các giá trị đã cho
trong X,Y,XI, và YI vào một miền giá trị cách
đều trước khi nội suy
INTERPFT
INTERPFT Nội suy 1 chiều bằng cách dùng phương
pháp FFT (biến đổi Fourier nhanh)
Y = INTERPFT(X,N) trả về vectơ Y độ dài N nhận
được bằng cách nội suy trong biển đổi Fourier
của X Giả sử x(t) là hàm tuần hoàn theo t
với chu kỳ p, tạo mẫu tai các điểm cách đều,
X(i) = x(T(i)) với T(i) = (i-1)*p/M, i = 1:M, M =
length(X) Rồi y(t) là một hàm tuần hoàn khác
cùng chu kỳ và Y(j) = y(T(j)) với T(j) = (j-1)*p/N,
j = 1:N, N = length(Y) Nếu N là một bội nguyên
của M, thì Y(1:N/M:N) = X
Nếu X là một ma trận, phép nội suy được thực
hiện theo từng cột
INTERPFT, không tham số, là một chương trình mẫu
Trang 5GRIDDATA
GRIDDATA Lưới dữ liệu
ZI = GRIDDATA(X,Y,Z,XI,YI) trả về ma trận ZI chứa
các phần tử tương ứng với các phần tử của các
ma trận XI và YI, và được xác định bằng phép
nội suy bên trong hàm 2 chiều mô tả bởi các vectơ
(X,Y,Z ) thông thường là không đồng bộ XI có
thể là vectơ dòng, trong trường hợp này nó chỉ
định một ma trận với các cột hằng Tương tự, YI
có thể là vectơ cột và nó chỉ định một ma trận
với các dòng
[XI,YI,ZI] = GRIDDATA(X,Y,Z,XI,YI) trả về XI và YI
tạo nên cách này, đó là giống các ma trận trả
về bởi MESHGRID GRIDDATA dùng phương pháp khoảng
cách đảo
Nội suy Spline
SPLINE
Phép nội suy số liệu spline lập phương
Các vectơ số liệu cho trước X và Y, và một vectơ
hoành độ mới XI, hàm YI = SPLINE(X,Y,XI) dùng
phép nội suy spline lập phương để tìm vectơ YI
tương ứng với XI Đây là một ví dụ để phat sinh
đường cong hình sin thô, rồi nội suy trên một
hoành độ tốt hơn:
x = 0:10; y = sin(x); xi = 0:.25:10; yi =
spline(x,y,xi); plot(x,y,'o',xi,yi)
PP = spline(x,y) trả về dạng-pp của phép nội suy
spline lập phương, để sau đó dùng với ppval, v.v
PPVAL
Ước lượng đa thức từng mảnh
v = ppval(pp,xx) trả về giá trị pp của hàm pp
tại xx
Hàm về xâu chữ
STRINGS
STRINGS Các chuỗi ký tự trong MATLAB
X = 'Any Ch' là một vectơ có các thành phần của
nó là mã ASCII của các ký tự Độ dài của X
là số ký tự Một dấu nháy trong chuỗi được
biểu hiện bằng 2 dấu nháy
X = REAL(X) đặt vectơ vào mã ASCII dạng thập phân
X = SETSTR(X) đặt ngược lại một chuỗi ISSTR(X)
kiểm tra X là một biến chuỗi
Vào lệnh "help strfun" cho danh sách các hàm xử
lý chuỗi
Trang 6ABS(X) là giá trị tuyệt đối của các phần tử của X Nếu X phức thì ABS(X) là môđun của các phần tử của X Nếu S là biến chuỗi MATLAB thì ABS(S) trả về các giá trị số ASCII thập phân của các ký tự trong chuỗi Không thay đỗi biểu hiện bên trong mà chỉ thay đổi cách in ra
SETSTR
Xem các giá trị số là chuỗi
X = SETSTR(X) có thể dùng cho các vectơ chứa các số nguyên từ 0 đến 255 để biểu hiện mã ASCII cho văn bản Hàm trả về vectơ được hiển thị như văn bản chứ không là các số nguyên
ISSTR
Đúng nếu là chuỗi
ISSTR(S) trả về 1 nếu là chuỗi văn bản, ngược lại trả về 0
BLANKS
Một chuỗi gồm các ký tự trống
BLANKS(n) là một chuỗi gồm n ký tự trống Dùng với DISP, như DISP(['x' BLANKS(20) 'y'])
DISP(BLANKS(n)') di chuyển con trỏ xuống n dòng
DEBLANK
DEBLANK Xóa các ký tự trống ở cuối một chuỗi DEBLANK(S) Xóa các ký tự trống ở cuối một chuỗi và mọi ký tự null trong chuỗi S Ký tự null là một ký tự có trị tuyệt đối bằng 0
STR2MAT
STR2MAT Tạo dạng ma trận văn bản từ các chuỗi riêng biệt
S = STR2MAT(T1,T2,T3, ) tạo ma trận S chứa các chuỗi văn bản T1,T2,T3, là các dòng Tự động thêm mỗi chuỗi các ký tự trống nhằm tạo ra một
ma trận hợp lý Có thể dùng đến 10 chuỗi để tạo S Mỗi tham số văn bản, Ti, có thể chính nó là một ma trận chuỗi Cách này cho phép tạo ra các ma trận chuỗi lớn tùy ý
EVAL
Thực hiện chuỗi chứa biểu thức MATLAB
EVAL(s), với s là một chuỗi, làm cho MATLAB thực hiện như một biểu thức hoặc một lệnh
EVAL(s1,s2) cung cấp khả năng bắt lỗi Nó thực hiện s1 và trả về nếu thao tác thành công Nếu thao tác bị lỗi thì s2 được ước lượng trước khi trả về Nghĩ như lệnh EVAL('try','catch')
[X,Y,Z, ] = EVAL(s) trả về các đối số xuất từ biểu thức trong chuỗi s Các chuỗi nhập vào EVAL thường được tạo ra bằng cách nối các chuỗi con và các biến bên trong cặp ngoặc vuông Ví dụ: Phát sinh một dãy ma trận có tên từ M1 đến M12:
Trang 7for n = 1:12 , eval(['M' num2str(n) ' =
magic(n)']) , end
Chạy một tệp M-file nguyên bản Các chuỗi tạo
nên các dòng của ma trận D phải cùng độ dài
D = ['odedemo '
'quaddemo'
'fitdemo '];
n = input('Select a demo number: ');
eval(D(n,:))
Đọc và xử lý các tệp data1.dat, data2.dat,
k = 0;
while 1
k = k+1;
datak = ['data' int2str(k)];
filename = [datak '.dat'];
if ~exist(filename), break, end
eval(['load ' filename]);
X = eval(datak);
% Xử lý dữ liệu trong ma trận X
end
STRCMP
So sánh chuỗi
STRCMP(S1,S2) trả về 1 nếu S1 và S2 giống nhau và
ngược lại thì trả vềì 0
FINDSTR
FINDSTR Tìm một chuỗi trong chuỗi khác
K = FINDSTR(S1,S2) trả về các chỉ số bắt đầu của
mọi xuất hiện S2 trong S1
Ví dụ:
s = 'How much wood would a woodchuck chuck?';
findstr(s,'a') trả về 21
findstr(s,'wood') trả về [10 23]
findstr(s,'Wood') trả về []
findstr(s,' ') trả về [4 9 14 20 22 32]
UPPER
Chuyển chuỗi sang chữ hoa
A = upper(a) chuyển mọi ký tự thường trong A
thành ký tự hoa tương ứng, các ký tự khác không
thay đổi
LOWER
Chuyển chuỗi sang chữ thường
b = lower(A) chuyển mọi ký tự hoa trong A thành
ký tự thường tương ứng, các ký tự khác không
thay đổi
ISLETTER
ISLETTER đúng nếu là chữ cái
Với một chuỗi S, thì ISLETTER(S) là 1 cho các chữ
cái, còn lại là 0
Trang 8ISSPACE đúng nếu là ký tự trống, sang dòng, về đầu dòng, tab, tab đứng, hay sang trang Với chuỗi
S, thì ISSPACE(S) là1 cho các ký tự trống và 0 cho ký tự khác
STRREP
STRREP tìm và thay thế chuỗi
S = STRREP(S1,S2,S3) thay thế S2 trong S1 với chuỗi mới S3
Ví dụ:
s1='This is a good example';
strrep(s1,'good','great') trả về 'This is a great example'
strrep(s1,'bad','great') trả về 'This is a good example'
strrep(s1,'','great') trả về 'This is a good example'
STRTOK
Tìm dấu hiệu trong chuỗi (dấu hiệu là ký tự không là chữ cái hay số)
STRTOK(S,D) trả về dấu hiệu đầu tiên trong S được đánh dấu bởi D Nó cũng có các trả về tùy chọn là phần còn lại của chuỗi gốc D là một mảng các ký tự dấu hiệu Nếu không cho dấu hiệu thì giả thiết là ký tự trống
NUM2STR
NUM2STR Chuyển số sang chuỗi
T = NUM2STR(X) chuyển số vô hướng X sang chuỗi biểu hiện trong T với khoảng 4 chữ số và có một phần mũ nếu cần Hàm này thường dùng để đánh nhãn trong các hình vẽ với các lệnh TITLE, XLABEL, YLABEL và TEXT Một đối số tùy chọn có thể cho để biểu hiện một độ chính xác thay đổi
T = NUM2STR(X,PREC) chuyển số vô hướng X sang chuỗi với một độ chính xác tối đa chỉ định bởi PREC