SIZE là tùy chọn; nó đặt một giới hạn vào số phần tử có thể được đọc từ tệp; nếu không chỉ định thì xem như toàn bộ tệp; nếu có chỉ định thì các đề mục hợp lý là: N đọc hầu hết N phần t
Trang 1[A,COUNT] = FSCANF(FID,FORMAT,SIZE) đọc dữ liệu từ tệp chỉ định bởi danh hiệu tệp FID, chuyển sang chuỗi chỉ định FORMAT, và trả về ma trận A COUNT là đối số xuất tùy chọn để trả về số phần tử đọc thành công
FID là một số nguyên danh hiệu tệp nhận được từ FOPEN SIZE là tùy chọn; nó đặt một giới hạn vào số phần tử có thể được đọc từ tệp; nếu không chỉ định thì xem như toàn bộ tệp; nếu có chỉ định thì các đề mục hợp lý là:
N đọc hầu hết N phần tử vào một vectơ cột
inf đọc đến hết tệp
[M,N] đọc M * N phần tử lấp đầy ít nhất một ma trận cỡ MxN, theo thứ tự cột N có thể là inf, nhưng không là M Nếu ma trận trả về
A từ cách chỉ dùng chuyển đổi ký tự và SIZE không thuộc dạng [M,N] thì trả về một vectơ cột FORMAT là một chuỗi chứa các chỉ định chuyển đổi của ngôn ngữ C Các chỉ định chuyển đổi gồm ký tự %, lựa chọn “* ” bỏ qua việc gán và trường độ rộng, và các ký tự chuyển kiểu d, i, o, u,
x, e, f, g, s, c, và [ .] Xem giáo trình C về các ký tự chuyển kiểu Nếu một ký tự chuyển đổi được dùng để đọc một phần tử thì có thể làm cho một số phần tử ma trận của MATLAB được dùng, mỗi phần tử giữ một ký tự Việc trộn ký tự và các chỉ định chuyển kiểu số sẽ làm cho ma trận kết quả là ma trận số và các ký tự đọc vào như giá trị ASCII của chúng, mỗi ký tự trên một phần tử của ma trận
FSCANF khác với hàm trùng tên của nó trong C, điều quan trọng tương ứng là nó được “vectơ hóa" nhằm trảí về một đối số ma trận Chuỗi FORMAT được dùng lại qua tệp cho đến khi hết tệp hoặc tổng số dữ liệu chỉ định bởi SIZE được đọc vào Ví dụ:
S = fscanf(fid,'%s') đọc (và trả về ) một chuỗi ký tự
A = fscanf(fid,'%5d') đọc số nguyên thập phân 5-chữ số
FPRINTF
FPRINTF Ghi dữ liệu có dạng thức vào tệp
COUNT = FPRINTF(FID,FORMAT,A, ) định dạng dữ liệu trong ma trận A (và trong mọi ma trận đôiú số thêm vào), dưới điều khiển của chuỗi chỉ định FORMAT, và ghi nó vào tệp có dạnh hiệu FID COUNT là đối số xuất tùy chọn để trả về số byte ghi thành công FID là một số nguyên danh hiệu tệp nhận được FOPEN Nó cũng có thể là 1 cho xuất chuẩn (màn hình) hoặc 2 cho lỗi chuẩn FORMAT là chuỗi chứa các chỉ định chuyển kiểu của C Các chỉ định chuyển đổi gồm ký tự %, , các cờ tùy chọn, các trường độ rộng và số các số thập phân, chỉ định kiểu con, và các ký tự chuyển
Trang 2kiểu d, i, o, u, x, X, f, e, E, g, G, c, và s Xem giáo trình C để biết thêm chi tiết
FPRINTF như ANSI C với các loại trừ và các mở rộng Bao gồm:
1 Nếu số thực kép của MATLAB không chuyển chính xác sang kiểu dữ liệu chỉ định trong ký tự chuyển kiểu thì FORMAT “e ” được dùng Phải chuyển rõ ràng các giá trị không nguyên của MATLAB sang các giá trị nguyên nếu có ý định dùng chỉ định chuyển kiểu nguyên như “ d ” và lấy cách xử lý của ANSI C
2 Các chỉ định kiểu con không chuẩn sau được cung cấp cho các ký tự chuyển kiểu o, u, x, và X
t - Kiểu dữ liệu cơ sở của C là float khác với số nguyên không dấu
b - Kiểu dữ liệu cơ sở của C là double khác với số nguyên không dấu
Ví dụ, để in ra một giá trị double cơ số hex thì dùng FORMAT như '%bx'
FPRINTF cũng khác với hàm cùng tên của nó trong
C - quan trọng là " vectơ hóa " khi A không phải là đại lượng vô hướng Chuỗi FORMAT được dùng lại qua các phần tử của A (từng cột) cho đến khi tất cả các phần tử được dùng hết Rồi nó được dùng lại theo cùng cách, không khởi tạo lại, qua mọi đối số ma trận thêm vào Ví dụ, các lệnh
x = 0:.1:1; y = [x; exp(x)];
fid = fopen('exp.txt','w');
fprintf(fid,'%6.2f %12.8f\n',y);
tạo mới một tệp văn bản chứa bảng ngắn các giá trị của hàm mũ cơ số tự nhiên:
0.00 1.00000000
0.10 1.10517092
1.00 2.71828183
FGETL
Trả về dòng tiếp theo của tệp như một chuỗi
FGETL(FID) trả về dòng tiếp theo của một tệp với danh hiệu tệp FID như một chuỗi MATLAB Trả về mà không đưa vào ký tự sang dòng Dùng FGETS() để lấy dòng tiếp theo có đưa vào ký tự sang dòng Nếu đúng kết thúc tệp thì trả về -1 QUAN TRỌNG: Hãy lưu ý rằng hàm này có ý chỉ dùng với tệp văn bản Nếu bởi nhầm lẫn, đọc một tệp "nhị phân" mà không có ký tự sang dòng thì phục vụ này có thể tốn nhiều thời gian với tệp lớn Ví dụ: (tương đương lệnh 'type fgetl.m')
fid=fopen('fgetl.m');
while 1
line = fgetl(fid);
if ~isstr(line), break, end
disp(line)
Trang 3end
fclose(fid);
FGETS
Trả về dòng tiếp theo của tệp như một chuỗi
FGETS(FID) trả về dòng tiếp theo của một tệp với danh hiệu tệp fid là một chuỗi MATLAB Có đưa vào ký tự sang dòng Dùng FGETL() để lấy dòng tiếp theo mà không đưa vào ký tự sang dòng Nếu đúng kết thúc tệp thì trả về -1
QUAN TRỌNG: Hãy lưu ý rằng hàm này có ý chỉ dùng với tệp văn bản Nếu bởi nhầm lẫn, đọc một tệp "nhị phân" mà không có ký tự sang dòng thì phục vụ này có thể tốn nhiều thời gian với tệp lớn
Vị trí tệp
FERROR
Hỏi các lỗi trong nhập/xuất tệp
MESSAGE = FERROR(FID,'clear') trả về thông báo lỗi vào/ra gần nhất với tệp chỉ định Chuỗi 'clear' là tùy chọn Nếu có, thì xóa lỗi biểu hiện cho tệp chỉ định
[MESSAGE, ERRNUM] = FERROR(FID) cũng trả về số lỗi FID là một số nguyên danh hiệu tệp nhận được từì FOPEN, hoặc 0 cho nhập chuẩn, 1 cho xuất chuẩn hoặc 2 cho lỗi chuẩn
FEOF
Kiểm tra hết tệp
FEOF(FID) kiểm tra biểu hiện hết tệp cho tệp với danh hiệu tệp là FID
FEOF(FID) trả về 1 nếu biểu hiện hết tệp được đặt, hoặc 0 nếu không đặt
FSEEK
Đổi biểu hiện vị trí trong một tệp
STATUS = FSEEK(FID, offset, origin) đặt lại vị trí tệp trong tệp chỉ định vào số byte offset tương ứng với origin chỉ định FID là một số nguyên danh hiệu tệp nhận được từì FOPEN Các giá trị offset được thông dịch như sau:
> 0 : Di chuyển về phía cuối tệp
= 0 : Không thay đổi vị trí
< 0 : Di chuyển về phía đầu tệp
Các giá trị origin được thông dịch như sau:
'bof' hoặc -1 : Đầu tệp
'cof' hoặc 0 : Vị trí hiện thời trong tệp 'eof' hoặc 1 : Cuối tệp
STATUS = 0 nếu thành công vàì -1 nếu bị lỗi
Ví dụ:
fseek(fid,0,-1) "tua lại" tệp (đặt vị trí lại ở đầu tệp)
Trang 4
FTELL
Tìm vị trí trong một tệp
POSITION = FTELL(FID) trả về vị trí của trong tệp chỉ định Position biểu hiện theo đơn vị byte tính từ đầu tệp Nếu -1 được trả về, thì biểu hiện không thành công; dùng FERROR để xác định trạng thái lỗi FID là một số nguyên danh hiệu tệp nhận được từ FOPEN, hoặc 0 cho nhập chuẩn, 1 cho xuất chuẩn hoặc 2 cho lỗi chuẩn
Trang 5FREWIND
FREWIND tua lại một tệp đang mở
FREWIND(FID) đặt con trỏ tệp vào đầu tệp với danh hiệu tệp là fid
Khuyến cáo: Tua lại một danh hiệu tệp fid với một thiết bị băng từ có thể không không làm việc, mặc dù không phát sinh lỗi!
Chuyển đổi chuỗi
SPRINTF
SPRINTF Ghi dữ liệu có dạng thức vào một chuỗi [S,ERRMSG] = SPRINTF(FORMAT,A, ) định dạng dữ liệu trong ma trận A (và trong các đối số ma trận thêm vào), dưới điều khiển của chuỗi chỉ định FORMAT, và trả về nó trong biến S với dạng chuỗi MATLAB ERRMSG là đối số xuất tùy chọn để trả về một chuỗi thông báo lỗi nếu xảy ra lỗi hoặc một ma trận rỗng nếu không lỗi SPRINTF giống như FPRINTF ngoại trừ nó trả về dữ liệu trong một biến chuỗi MATLAB khác với ghi vào tệp FORMAT là một chuỗi chứa các chỉ định chuyển kiểu của C Các chỉ định chuyển kiểu gồm ký tự %, các cờ, các trường độ rộng và số chữ số thập phân, chỉ định kiểu con, và ký tự chuyển kiểu d, i, o, u, x, X, f, e, E, g, G, c, và
s Xem giáo trình C để biết thêm chi tiết SPRINTF như trong ANSI C với mọt số ngoại lệ và mở rộng Bao gồm:
1 Nếu số thực kép của MATLAB không chuyển chính xác sang kiểu dữ liệu chỉ định trong ký tự chuyển kiểu thì FORMAT “e ” được dùng Bạn phải chuyển rõ ràng các giá trị không nguyên của MATLAB sang các giá trị nguyên nếu bạn có ý định dùng chỉ định chuyển kiểu nguyên như “ d ” và lấy cách xử lý của ANSI C
2 Các chỉ định kiểu con không chuẩn sau được cung cấp cho các ký tự chuyển kiểu o, u, x, và X
t - Kiểu dữ liệu cơ sở của C là float khác với số nguyên không dấu
b - Kiểu dữ liệu cơ sở của C là double khác với số nguyên không dấu
Ví dụ, để in ra một giá trị double cơ số hex thì dùng FORMAT như '%bx'
SPRINTF cũng khác với hàm cùng tên của nó trong
C - quan trọng là " vectơ hóa " khi A không phải là đại lượng vô hướng Chuỗi FORMAT được dùng lại qua các phần tử của A (từng cột) cho đến khi tất cả các phần tử được dùng hết Rồi nó được dùng lại theo cùng cách, không khởi tạo lại, qua mọi đối số ma trận thêm vào Ví dụ, các lệnh
S = sprintf('rho is %5.3f',(1+sqrt(5))/2) cho ra chuỗi S = 'rho is 1.618'
Trang 6SSCANF
Đọc chuỗi dưới điều khiển có dạng thức
[A,COUNT,ERRMSG,NEXTINDEX] = SSCANF(S,FORMAT,SIZE) đọc dữ liệu từ biến chuỗi MATLAB là S, chuyển sang chuỗi chỉ định FORMAT, và trả về trong ma trận A COUNT là một đối số xuất tùy chọn để trả về số phần tư đọc thành công
ERRMSG là một đối số xuất tùy chọn để trả về một chuỗi thông báo lỗi nếu có lỗi hoặc một ma trận rỗng nếu không lỗi NEXTINDEX là một đối số xuất tùy chọn chỉ định một hay nhiều số ký tự đã quét trong S SSCANF giống FSCANF ngoại trừ nó đọc dữ liệu từ một biến chuỗi MATLAB khác với đọc từ một tệp SIZE là tùy chọn; nó đặt một giới hạn vào phần tư có thể quét từ chuỗi; nếu không chỉ định, thì xem như toàn bộ chuỗi; nếu có chỉ định, thì các đề mục hợp lý là:
N đọc N phần tử vào một vectơ cột
inf đọc đến cuối chuỗi
[M,N] đọc M * N phần tử lấp đầy ít nhất một ma trận cỡ MxN, theo cột N có thể là inf, nhưng không là M Nếu ma trận kết quả A chỉ từ việc dùng ký tự chuyển kiểu và SIZE không có dạng [M,N] thì một vectơ dòng được trả về FORMAT là một chuỗi chứa các chỉ định chuyển đổi của ngôn ngữ C Các chỉ định chuyển đổi gồm ký tự
%, lựa chọn “ * ” bỏ qua việc gán và trường độ rộng, và các ký tự chuyển kiểu d, i, o, u, x, e,
f, g, s, c, và [ .] Xem giáo trình C về các ký tự chuyển kiểu Nếu một ký tự chuyển đổi được dùng để đọc một phần tử thì có thể làm cho một số phần tử ma trận của MATLAB được dùng, mỗi phần tử giữ một ký tự Việc trộn ký tự và các chỉ định chuyển kiểu số sẽ làm cho ma trận kết quả là ma trận số và các ký tự đọc vào như giá trị ASCII của chúng, mỗi ký tự trên một phần tử của ma trận
Việc quét đến cuối chuỗi xảy ra khi NEXTINDEX lớn hơn kích thước của S
SSCANF khác với hàm trùng tên của nó trong C, điều quan trọng tương ứng là nó được “vectơ hóa" nhằm trảí về một đối số ma trận Chuỗi FORMAT được dùng lại qua tệp cho đến khi hết tệp hoặc tổng số dữ liệu chỉ định bởi SIZE được chuyển sang Ví dụ, các lệnh:
S = '2.7183 3.1416';
A = sscanf(S,'%f')
tạo mới một vectơ hai phần tử chứa giá trị xấp xỉ của số e và pi
Các ma trận thưa sơ cấp
SPEYE
Ma trận thưa đơn vị
Trang 7SPEYE(M,N) tạo một ma trận thưa cỡ MxN với các
số 1 trên đường chéo chính SPEYE(N) là cách gọn của SPEYE(N,N)
SPEYE(SIZE(A)) là một cách giảm không gian của
SPARSE(EYE(SIZE(A)))
Trang 8SPRANDN
Các ma trận thưa ngẫu nhiên
R = SPRANDN(S) có cùng cấu trúc thưa như S, nhưng
các phần tử được phân bố ngẫu nhiên chuẩn
R = SPRANDN(m,n,density) là ma trận thưa cỡ mxn,
với các phần tử khác không được phân bố chuẩn
khoảng density*m*n
R = SPRANDN(m,n,density,rc) cũng có số điều kiện
tương hỗ gần bằng rc R được xây dựng từ tổng
các ma trận hạng bằng 1 Nếu rc là một vectơ độ
dài lr <= min(m,n), thì R có lr giá trị kỳ dị của
nó là rc, tất cả các phần tử khác bằng 0
Trong trường hợp này, R được phát sinh bằng cách
quay phẳng ngẫu nhiên áp dụng cho một ma trận
chéo với các giá trị kỳ dị cho trước Nó có
cách phân phối lớn cấu trúc topo và đại số
SPRANDSYM
SPRANDSYM Các ma trận thưa ngẫu nhiên đối xứng
R = SPRANDSYM(S) là một ma trận thưa ngẫu nhiên
đối xứng có tam giác dưới và đường chéo cùng
câó trúc như S Các phần tử được phân bố
chuẩn, với trung bình 0 và phương sai 1
R = SPRANDSYM(n,density) là một ma trận vuông
thưa đối xứng ngẫu nhiên cấp n với các phần tử
khác không khoảng density*n*n; mỗi phần tử là
tổng của một hoặc nhiều các mẫu phân bố ngẫu
nhiên chuẩn
R = SPRANDSYM(n,density,rcond) cũng có số điều
kiện tương hỗ bằng rcond Việc phân bố các phần
tử là không đồng bộ; nó là đối xứng thô qua 0;
tất cả trong đoạn [-1,1] Nếu rcond là 1 vectơ độ
dài n, thì R có các giá trị riêng là rcond Do
đó, nếu rcond là một vectơ dương (không âm) thì R
sẽ xác định dương (không âm) Trong trường hợp
này, R được phát sinh bằng cách quay Jacobi áp
dụng vòa ma trận chéo với các giá trị riêng
hoặc số điều kiện cho trước Nó có cách phân
phối lớn cấu trúc topo và đại số
R = SPRANDSYM(n, density, rcond, kind) là một xác
định dương Nếu kind = 1 thì R được phát sinh bằng
phép quay một ma trận chéo xác định dương R có
đúng số điều kiện mong muốn Nếu kind = 2 thì R
là tổng dịch chuyển các tích ngoại lai R chỉ có
số điều kiện mong muốn nhưng cấu trúc nhỏ hơn
Nếu R = SPRANDSYM(S, density, rcond, 3), thì R có
cùng cấu trúc như ma trận S và số điều kiện
xấp xỉ 1/rcond, đối số density được bỏ qua
SPDIAGS
SPDIAGS Trích ra và tạo mới các ma trận dãi băng
và ma trận chéo thưa SPDIAGS, là tổng quát hóa hàm gắn liền "diag",
xử lý 3 loại ma trận , các tổ hợp khác nhau,
cũng như nhập và xuất A là ma trận cỡ mxn,
thường thưa (nhưng không cần thiết), với các phần