1. Trang chủ
  2. » Công Nghệ Thông Tin

IT - Matlab Software (Phần 2) part 8 pptx

8 269 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 162,25 KB

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

Nội dung

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 2

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

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 3

end

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 5

FREWIND

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 6

SSCANF

Đọ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 7

SPEYE(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 8

SPRANDN

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

Ngày đăng: 10/07/2014, 02:20

TỪ KHÓA LIÊN QUAN