Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 10
  • Otvaranje pdf fajlova u matlabu. Osnove programiranja u MatLabu

Otvaranje pdf fajlova u matlabu. Osnove programiranja u MatLabu

Nedostatak gore navedenih funkcija spremanja i učitavanja je što rade s određenim formatima datoteka (obično mat-fajlovi) i ne dozvoljavaju učitavanje ili spremanje podataka u drugim formatima. U međuvremenu, može postojati potreba za učitavanjem informacija, na primjer, iz binarnih datoteka koje su kreirali drugi softverskih proizvoda za dalju obradu rezultata u MatLabu. U tu svrhu razvijene su funkcije

fwrite(<идентификатор файла>, <переменная>, <тип данных>);

<переменная>=fread(<идентификатор файла>);
<переменная>=fread(<идентификатор файла>, <размер>);
<переменная>=fread(<идентификатор файла>, <размер>, <точность>);

Evo<идентификатор файла>je pokazivač na datoteku za rad. Da biste dobili ID, koristite funkciju

<идентификатор файла>= fopen(<имя файла>,<режим работы>);

gdje parametar<режим работы>može uzeti vrijednosti date u tabeli. 5.1.

Tabela 5.1. Načini rukovanja datotekama u MatLabu

parametar<режим работы>

opis

pisati (briše prethodni sadržaj datoteke)

dodaj (kreira fajl ako ne postoji)

čitanje i pisanje (ne kreira fajl ako ne postoji)

čitanje i pisanje (briše stari sadržaj ili kreira datoteku ako ne postoji)

pročitaj i dodaj (kreira fajl ako ne postoji)

dodatni parametar, što znači rad sa binarne datoteke, na primjer, 'wb', 'rb' 'rb+', 'ab', itd.

Ako funkcija fopen() iz nekog razloga ne može ispravno otvoriti datoteku, vraća -1. Ispod je fragment programa za pisanje i čitanje podataka iz binarne datoteke:

A = ;

fid = fopen("my_file.dat", "wb"); % otvoren fajl za pisanje

error("Datoteka nije otvorena");
kraj

fwrite(fid, A, "double"); % upisivanja matrice u datoteku (40 bajtova)
fclose(fid); % zatvori fajl

fid = fopen("my_file.dat", "rb"); % otvoren fajl za čitanje
ako je fid == -1% provjeriti ispravnost otvaranja
error("Datoteka nije otvorena");
kraj

B = fread(fid, 5, "double"); % čita 5 dvostrukih vrijednosti
disp(B); % prikaz na ekranu
fclose(fid); % zatvori fajl

Kao rezultat pokretanja ovog programa, u radnom direktoriju će se kreirati 40-bajtna datoteka my_file.dat, koja će sadržavati 5 vrijednosti tipa double, zapisanih kao niz bajtova (8 bajtova za svaku vrijednost). Funkcija fread() čita sekvencijalno pohranjene bajtove i automatski ih pretvara u dvostruke, tj. svakih 8 bajtova se tumače kao jedna dvostruka vrijednost.

U gornjem primjeru, broj elemenata (pet) je eksplicitno specificiran za čitanje iz datoteke. Međutim, često ukupan broj elemenata nije poznat unaprijed ili se mijenja tokom programa. U ovom slučaju, bilo bi bolje čitati podatke iz datoteke dok se ne dođe do kraja datoteke. MatLab ima funkciju za provjeru da li je dostignut kraj datoteke

feof(<идентификатор файла>)

koji vraća 1 kada se dostigne kraj datoteke i 0 u suprotnom. Prepišimo program za čitanje proizvoljan broj elementi tipa double iz ulazne datoteke.

fid = fopen("my_file.dat", "rb"); % otvoren fajl za čitanje
ako je fid == -1
kraj

B=0; % inicijalizacije varijable
cnt=1; % inicijalizacija brojača
while ~feof(fid) % petlja dok se ne dostigne kraj datoteke
= fread(fid, 1, "double"); %čitanje jednog
% dvostruke vrijednosti (V sadrži vrijednost
% elementa, N je broj pročitanih elemenata)
ako je N > 0 % ako je element uspješno pročitan, onda
B(cnt)=V; % formiraju vektor reda od vrijednosti V
cnt=cnt+1; % povećati brojač za 1
kraj
kraj
disp(B); % prikaza rezultata na ekranu
fclose(fid); % zatvori fajl

Ovaj program dinamički generiše vektor reda dok se elementi čitaju iz ulazne datoteke. MatLab automatski povećava dimenziju vektora ako je indeks sljedeći element 1 više od maksimuma. Međutim, na takvu proceduru se troši dosta kompjuterskog vremena, a program počinje da radi primetno sporije nego da je dimenzija vektora B od samog početka određena na 5 elemenata, na primer kako sledi

Također treba napomenuti da je funkcija fread() napisana sa dva izlazna parametra V i N. Prvi parametar sadrži vrijednost pročitanog elementa, a drugi broj pročitanih elemenata. V ovaj slučaj vrijednost N će biti jednaka 1 svaki put kada se informacija ispravno pročita iz datoteke, a 0 kada se pročita servisni znak EOF, što znači kraj datoteke. Provjera u nastavku vam omogućava da pravilno formirate vektor vrijednosti B.

Također možete pohraniti nizove podataka koristeći funkcije fwrite() i fread(). Na primjer, s obzirom na niz

str = "Zdravo MatLab";

fwrite(fid, str, "int16");

Ovdje se koristi tip int16, jer kada se radi sa ruskim slovima, MatLab sistem koristi dvobajtnu reprezentaciju svakog znaka. Slijedi program za pisanje i čitanje podataka niza pomoću funkcija fwrite() i fread():

fid = fopen("my_file.dat", "wb");
ako je fid == -1
error("Datoteka nije otvorena");
kraj

str="Bok MatLab"; % string za pisanje
fwrite(fid, str, "int16"); % pisati u datoteku
fclose(fid);

fid = fopen("my_file.dat", "rb");
ako je fid == -1
error("Datoteka nije otvorena");
kraj

B=""; % inicijalizacija stringa
cnt=1;
dok ~feof(fid)
= fread(fid, 1, "int16=>char"); % očitane struje
Simbol % i konverzija
% to char
ako je N > 0
B(cnt)=V;
cnt=cnt+1;
kraj
kraj
disp(B); % prikaza string na ekranu
fclose(fid);

Rezultat pokretanja programa će izgledati ovako

Lekcija broj 19.

Rad sa fajlovima

    Otvaranje i zatvaranje fajlova

    Operacije nad binarnim datotekama

    Operacije na formatiranim datotekama

    Pozicioniranje fajla

    Specijalizovani fajlovi

Fajlovi su prilično uobičajeni objekti u MATLAB sistemu. Neki tipovi datoteka su već razmatrani u prethodnim poglavljima. Ova lekcija se bavi svojstvima datoteka koje ne zavise od njihovog tipa i koje se odnose na bilo koje datoteke.

Otvaranje i zatvaranje fajlova

File obično je neka zbirka podataka objedinjena jednim imenom. Tip datoteke obično je određen njegovom ekstenzijom. Mi smatramo datoteku kao cjelinu, iako fizički na disku može biti predstavljena s nekoliko područja - kažu da je u ovom slučaju datoteka fragmentirana.

Prije korištenja bilo koje datoteke, ona mora biti otvoren, i na kraju upotrebe - zatvoreno. Mnoge datoteke se mogu otvoriti i čitati u isto vrijeme. Razmotrite komande za otvaranje i zatvaranje datoteka.

    Naredba open name, gdje ime mora sadržavati niz znakova ili karakternu varijablu, otvara datoteke ovisno o raščlanjivanju imena parametra i ekstenzija u imenu imena:

    • varijabla - otvara niz po imenu u uređivaču niza;

      Mat - otvara datoteku, sprema varijable u strukturu u radni prostor;

      Fig - otvara ga u uređivaču svojstava;

      M - otvara m-datoteku u editoru-debageru;

      Mdl - otvara model u Simulink-u;

      R - otvara, ako postoji, m-datoteku sa istim imenom;

      Html - otvara se HTML dokument u pretraživaču pomoći.

Ako fajlovi sa ekstenzijom postoje na MATLAB putanji, onda je datoteka vraćena naredbom čije ime se otvara, ako ne, onda datoteka iz sistem podataka. Ako datoteka nema ekstenziju imena, onda je otvara program čiji format datoteke bi detektovala funkcija igpsIGfilename") Prema zadanim postavkama, za sve datoteke sa završetcima koji nisu gore navedeni, poziva se openother. Open poziva funkcije openxx, gdje je xxx ekstenzija datoteke. Izuzeci su varijable radnog prostora na kojima se poziva openvar i slike na kojima se poziva openim. nove ekstenzije na listi. Zatvorite fajlove otvorene sa otvori pomoć, potrebno od uredništva koje zove orenxxx.

    Uigetfile(FILTERSPEC.Title). Otvara dijalog pod nazivom Naslov sa filterom FILTERSPEC (na primjer, niz ćelija koji sadrži ekstenzije datoteke) i vraća datoteku koju je odabrao korisnik i njenu putanju. Vraća FILENAME=0 ako datoteka ne postoji ili ako je korisnik kliknuo na Otkaži. = uigetfile(FILTERSPEC, Naslov. X. Y) postavlja dijaloški okvir na X, Y (koordinate piksela).

primjer:

Uigetfile("*.m;*.fig;*.mat:*.mdl". "Sve MATLAB datoteke (*.m, *.fig, *.mat. *.mdl)": ...

    Uiputfile(FILTERSPEC.TITLE) sprema datoteku u dijalogu koji vodi korisnik. Parametri su slični onima u funkciji uigetfile.

    Ui open naredba otvara dijalog, a ako je korisnik odabrao datoteku sa poznato proširenje, poziva ga koristeći open, ili ako ima ime datoteke nepoznata ekstenzija, tada se poziva uigetfile. uiopen ulazni argumenti mogu biti mat lab, load, figure, simulink, editor. Bez ulaznih argumenata ili sa matlab ulaznim argumentom, dijaloški okvir od vas traži da odaberete *.m, *.fig, *.mat,*.mdl (ako je instaliran Simulink) , * . cdr (ako je tok stanja postavljen), *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb (ako je instalirana Real-Time Workshop). Sa opterećenjem argumenta - *.mat. Sa argumentom figure, *.fig; simul ink - *.mdl, editor - *.m, *.mdt *.cdr, *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb.

primjer:

uiopen figure.

    Komanda uiload otvara datoteku u dijalogu koji vodi korisnik pomoću naredbe load.

Funkcija uvoza korisničkog interfejsa pokreće čarobnjaka za uvoz, uvozeći iz datoteke u trenutnoj fascikli ili međuspremniku Windows razmjena. To odgovara odabiru Import Data iz menija File ili odabiru Paste Special iz MATLAB Edit menija.

    Ui import (FILENAME) - Pokreće čarobnjak za uvoz otvaranjem datoteke FILENAME. Čarobnjak za uvoz prikazuje podatke za pregled. Podaci i njihova reprezentacija kao MATLAB varijable pojavljuju se u prozoru za pregled. Stvarni podaci, tekst i naslovi izgledaju drugačije MATLAB varijable. Za ASCII podatke, morate osigurati da čarobnjak za uvoz prepoznaje separatore stupaca. Sam po sebi, može prepoznati samo tabulator, razmak, zarez ili tačku i zarez. Potrebno je da kliknete na dugme Dalje iu sledećem prozoru ili potvrdite izbor separatora koji je napravio čarobnjak, ili izaberite Ostalo i unesite bilo koji separator.

    ui import ("-f i le") - prvo prikazuje dijalog za odabir datoteke.

    ui import ("-pastespecial") - prvo prikazuje sadržaj Windows međuspremnika za pregled.

    S = ui import (...) pohranjuje rezultirajuće varijable kao polja strukture S.

    Naredba uisave je spremanje koje kontrolira korisnik (naredba spremanja je opisana u lekciji 2) sa Windows dijalogom.

    Funkcija saveas pohranjuje crtež ili Simulink model u željenom formatu na mediju za pohranu ili na uređaju s omogućenom ispisom.

    funkcija saveas(H, "FILENAME") - sprema podatke prema komandi deskriptor grafike H u FILENAME. Format datoteke je određen ekstenzijom naziva FILENAME.

    Funkcija saveas (H. "FILENAME" . "FORMAT") radi isto, ali sa parametrom FORMAT (format je specificiran na isti način kao ekstenzija naziva datoteke i može se razlikovati od njega). FORMAT ima prednost nad ekstenzijom naziva datoteke. Parametri funkcije:

primjeri:

saveas(gcf. "output", "fig") saveasCgcf, "output", "bmp")

Naredba ili funkcija brisanja briše grafičku datoteku ili objekt.

    Delete filename briše datoteku trenutni folder. Može biti korišteno *. Poželjno se koristi sa unosom u obliku funkcije delete("mw of file") kada je ime datoteke niz.

    delete(H) briše grafički objekat sa ručkom H. Ako je ovaj objekt prozor, onda je preliminarno zatvoren.

    Close(H) funkcija zatvara samo grafičke prozore. Morate koristiti naredbu f close da zatvorite datoteke.

Za pisanje datoteka na disk, naredba za spremanje se koristi u prilično očiglednom obliku:

spasiti

save filename save filename varl var2 ... save ... opcija save(" filename" , ...)

U skladu s tim, naredba load se koristi za čitanje datoteka s diska:

opterećenje

učitavanje ime datoteke učitavanje ime datoteke X Y Z

učitavanje ime datoteke -ascii učitavanje ime datoteke -mat

U ovim naredbama, naziv datoteke je specificiran prema pravilima usvojenim u operativnim sistemima klase MS-DOS. Ove komande se obično dupliraju pomoću dugmadi na traci sa alatkama i pretraživača datoteka.

Operacije nad binarnim datotekama

Binarno ili binarni, fajlove imena čiji su podaci mašinski kodovi. Glavne operacije s takvim kodovima navedene su u nastavku.

    fopen(filename, permission) - otvara datoteku sa imenom filename i parametrom navedenim u dozvoli, i vraća fid sa vrijednošću: 0 - čitanje sa tastature (dozvola je postavljena na "r"); 1 - izlaz na displej (dozvoljenje je postavljeno na "a"); 2 - izlaz poruke o grešci (dozvoljenje je postavljeno na "a"); -1 - neuspjeh otvaranja datoteke sa izlazom poruka o vrsti greške. Fid identifikator se često koristi kao argument od strane drugih funkcija i I/O programa. Ime datoteke ime datoteke može sadržavati putanju do datoteke.

Ako datoteka koja se otvara za čitanje nije pronađena u trenutnom direktoriju, funkcija fopen traži datoteku na stazi navedenoj u MATLAB-u.

Parametar dozvole može uzeti jednu od sljedećih osnovnih vrijednosti (za ostale, pogledajte sistem pomoći):

    "r" - otvaranje datoteke za čitanje (podrazumevano);

    "r+" - otvaranje datoteke za čitanje i pisanje;

    "w" - obrišite sadržaj postojeće datoteke ili kreirajte novu i otvorite je za pisanje;

    "a" - kreirajte i otvorite novu datoteku ili otvorite postojeću zazapisi priloženi na kraj datoteke.

Dodavanje "b" u ovu liniju (podrazumevano) govori sistemu da otvori datoteku u binarnom režimu.

Dodavanje "t" umjesto b u ovaj red, na primjer "rt", na operativnim sistemima koji razlikuju tekstualne i binarne datoteke, daje instrukcije sistemu da otvori datoteku u tekstualni mod. Na primjer, u svim verzijama MATLAB-a za Windows/MS-DOS i VMS, ne možete otvoriti tekstualni fajl bez "rt" parametra. Unos datoteka koristeći fopen u tekstualnom modu uklanja sve znakove koji se vraćaju prije znaka novi red.

    Fopentfilename.permission,format) - Otvara datoteku kao što je gore opisano, vraćajući ID datoteke i poruku. Osim toga, vrijednost parametra formata vam omogućava da precizno definirate format broja. Postoji 8 mogućih formata, čiji opis možete pronaći u sistemu pomoći. Konkretno, niz formata može biti "native" (format računara na kojem je sistem instaliran), "vax", "cry" (VAX i Cray računari) itd.

Određeni pozivi za fread ili fwrite mogu nadjačati format broja naveden u pozivu fopen.

    fids = fopen C all") - vraća vektor reda koji sadrži identifikatore svih otvorenih datoteka, ne uključujući standardni tokovi O, 1 i 2. Broj vektorskih elemenata jednak je broju otvorio korisnik datoteke;

    Fopen(fid) - Vraća puno ime datoteke, string .permission i string formata. Nevažeće fid vrijednosti vraćaju prazne nizove za sve izlazne argumente.

Naredba fclose zatvara datoteku. Ima sljedeće opcije.

    Status = fclose(fid) - zatvara datoteku ako je otvorena. Vraća status datoteke, što je 0 ako je zatvaranje bilo uspješno i -1 u suprotnom. Argument fid je identifikator povezan sa otvorenom datotekom (pogledajte funkciju fopen za detaljniji opis);

    status = fclose("all") zatvara sve otvorene datoteke. Vraća 0 ako je uspješan, -1 u suprotnom.

Primjer otvaranja i zatvaranja datoteke:

» fid=fopen("c:\ex"."a+") fid = 4

» fclose(4)

ans =

    Fread(fid,size,precision) - čita binarne podatke iz specificirani fajl i stavlja ih u matricu A. Izlazni argument brojanja sadrži broj uspješno pročitanih elemenata. Vrijednost fid je cijeli broj koji vraća fopen; veličina - argument koji specificira količinu podataka za čitanje. Ako argument veličine nije naveden, funkcija f read čita podatke do kraja datoteke.

Koriste se sljedeći parametri veličine:

    n - čitanje n elemenata u vektor kolone;

    Čita onoliko elemenata koliko je potrebno za popunjavanje matrice thp.

Popunjavanje se vrši u kolonama. Ako u datoteci ima nekoliko elemenata, tada je matrica napunjena nulama. Ako čitanje dođe do kraja datoteke bez popunjavanja matrice potrebne veličine, tada se matrica puni nulama. Ako dođe do greške, čitanje se zaustavlja na posljednjoj očitanoj vrijednosti. Parametar preciznosti je niz koji specificira numeričku preciznost čitanja vrijednosti, kontrolira broj pročitanih bitova za svaku vrijednost i interpretira te bitove kao cijeli broj, broj s pomičnim zarezom ili znak

    Fread(fid,size.precision,skip) - Uključuje proizvoljan argument za preskakanje koji specificira broj bajtova koje treba preskočiti nakon svakog čitanja. Ovo može biti korisno kada izvlačite nesusjedne podatke iz zapisa fiksne dužine. Ako je preciznost u formatu bita, kao što je "bitN 1 ili "ubitN", vrijednost preskakanja je određena pomoću ~ bits. Opsežna lista moguće vrijednosti parametar preciznosti se može naći u MATLAB sistemu pomoći;

    count=fwrite(fid,A,precision) - upisuje elemente matrice A u datoteku, predstavljajući ih sa navedenom preciznošću. Podaci se zapisuju u datoteku u kolonama, izlazni argument count sadrži broj uspješno upisanih elemenata. Vrijednost identifikatora fid je cijeli broj dobiven iz funkcije f open. Dodaje povratne oznake prije početka nove linije;

    count=fwrite(fid.A,precision,skip) - radi isto, ali uključuje proizvoljan argument za preskakanje koji specificira broj bajtova koje treba preskočiti prije svakog pisanja. Ovo je korisno kada umetnete podatke u nesusedna područja u zapisima fiksne dužine. Ako je preciznost u formatu bita, kao što je "bitN" ili "ubitN", vrijednost preskakanja je navedena u bitovima.

primjeri:

» fid = fopen("c:\prim","a+")

fid=

» A=magic(7)

A =

30

39

48

1

10

19

28

38

47

7

9

18

27

29

46

6

8

17

26

35

37

5

14

16

25

34

36

45

13

15

24

33

42

44

4

21

23

32

41

43

3

12

22

31

40

49

2

11

20

» count = fwrite(j.A)

Count =

» status=fclose(3)

status=

» fid

Fopen("c:\prim"."r")

fid=

» = fread(3.)

30

39

48

1

10

19

28

38

47

7

9

18

27

29

46

6

8

17

26

35

37

5

14

16

25

34

36

45

13

15

24

33

42

44

4

21

23

32

41

43

3

12

22

31

40

49

2

11

20

count =

Operacije na formatiranim datotekama

Pozivaju se datoteke koje sadrže formatirane podatke formatirane datoteke. Ispod su funkcije koje se koriste za rad s takvim datotekama.

    Linija = fgetl(fid) - vraća string od datoteka sa identifikatorom fid sa uklonjenim znakom na kraju reda. Ako funkcija fgetl otkrije kraj datoteke, vraća -1 (pogledajte funkciju fopen za više informacija). Detaljan opis fid);

    Linija = f dobija (fid) - vraća liniju iz datoteke sa id fid bez uklanjanja terminatora linije. Ako funkcija fgets otkrije kraj datoteke, vraća -1;

    Linija = fgets(fid.nchar) - ne vraća više od nchar prvih znakova reda. Nakon kraja reda ili kraja datoteke, ne dodatni karakteri se ne čitaju (pogledajte primjere za funkciju fscanf);

    Count = fprintf(fid.format,A....) formatira podatke sadržane u realnom dijelu matrice A pod kontrolom niza formata i upisuje ih u datoteku sa identifikatorom fid. Funkcija fprintf vraća broj upisanih bajtova. Vrijednost fid je cijeli broj koji vraća funkcija fopen.

Ako izostavite identifikator fid sa liste argumenata u funkciji fprintf, onda će se izlaz izvesti na ekranu, baš kao kada se koristi standardni izlaz (fid=l).

    fprintf(format,A....) - pisati u standardni uređaj- ekran (ali ne u fajl). Niz formata definiše sistem brojeva, poravnanje, značajne figure, širina polja i drugi atributi izlaznog formata. Može sadržavati obična slova abecede zajedno sa specifikacijama, oznakama za poravnanje itd.

Tabela 19.1. Posebni znakovi u nizovima formata

Simbol

Opis

\n

Nova linija

\t

Horizontalna kartica

\b

Vrati jedan znak

\r

Povrat kočije

\f

Nova stranica

\\

Povratna kosa crta

\" ili "

jednostruki navodnik

%%

Procenat

Funkcija fprintf ponaša se kao ekvivalentna ANSI C funkcija fprintf, sa nekim izuzecima i ekstenzijama. U tabeli. 19.1 su opisani Posebni simboli pronađeno u format string. Za izlaz numeričkih ili znakovnih podataka u nizu formata, morate koristiti specifikacije navedeno u tabeli. 19.2.

Tabela 19.2. Specifikatori formata izlaza podataka

specificer

Opis

%d Decimalni sistem simboli (potpisani)
*Sa Jedan karakter

%e

Eksponencijalni prikaz brojeva pomoću simbola "e" na dnu registar, na primjer 3.1415e + 00

Eksponencijalni prikaz brojeva pomoću simbola "E" na vrhu registar, na primjer 3.1415E + 00

%f

Notacija fiksne tačke

%g

Najkompaktniji od %e i %f. Vodeće nule se ne izlaze.

%G

Isto kao %d, ali koristi velika slova za znak "E".

%O

Oktalna notacija (nepotpisana)

%s

Niz znakova

%u

Decimalni zapis (nepotpisan)

%x


Heksadecimalni zapis pomoću simbola mala slova("a"..."f")

%X

Heksadecimalni zapis koji koristi velika slova ("A"...F")

Dodatni znakovi se mogu umetnuti između znaka procenta i slova u specifikaciji. Njihovo značenje je objašnjeno u tabeli. 19.3.

Tabela 19.3. Opcije specificatora formata

Simbol

Opis

Primjer

Znak minus" (-)

Poravnajte konvertovane argumente ulijevo

%-5,2d

znak plus (+)

Uvijek odštampajte znak broja (+ ili -)

%+5,2d

nula (0)

Padding sa nulama umjesto razmacima

%05.2d

Brojevi

Određuje minimalni broj znakova za štampanje

%6f

Brojevi (posle tačke)

Broj iza tačke određuje broj ispisanih znakovadesno od decimalnog zareza

%6.2f

    A = fscanf(fid, format) - čita sve podatke iz datoteke sa identifikatorom, fid, pretvara ih prema vrijednosti parametra formata i vraća ga kao matricu A. Vrijednost identifikatora fid je vraćen cijeli broj pomoću fopen funkcije. Parametar formata je niz koji specificira format podataka koji se čitaju;

    Fscanf(fid.format,size) - čita količinu podataka specificiranu parametrom veličine, pretvara je u skladu sa parametrom formata i vraća je zajedno sa brojem uspješno pročitanih elemenata brojača. Parametar veličine je proizvoljan argument koji specificira količinu podataka za čitanje. Važeće vrijednosti su:

    • inf - pročitati elemente do kraja datoteke i staviti ih u vektor kolone koji sadrži isti broj elemenata kao u datoteci;

      Čita onoliko elemenata koliko je potrebno za popunjavanje matrice veličine thp. Popunjavanje se vrši u kolonama. Vrijednost n (ali ne!) može uzeti vrijednost Inf.

Niz formata se sastoji od redovni likovi i/ili specifikacije. Specifikatori označavaju tip podataka koji se čitaju i uključuju karakter %, opcija širine polja i format znakova. Mogući znakovi formata navedeni su u tabeli. 19.4.

Tabela 19.4. Formatirajte znakove koje koristi fscanf

Simbol

Opis

Redoslijed znakova; parametar širine polja određuje broj znakova za čitanje

%d

Decimalni broj

%e, %f, %g

broj s pomičnim zarezom

%i

Potpisani cijeli broj

%o

Potpisani oktalni broj

%s

Niz znakova koji nisu razmak

%u

Predpisani decimalni cijeli broj

%x

Heksadecimalni cijeli broj sa predznakom

[...]

Slijed karaktera

Između karaktera % i znak formata, dozvoljeno je umetanje sljedećih znakova:

    Zvjezdica (*) znači da odgovarajuća vrijednost ne mora biti pohranjena u izlaznoj matrici;

    Niz skupova brojeva maksimalna širina polja;

    Slovo označava veličinu rezultirajućeg objekta: h za kratki cijeli broj (na primjer, %n d), 1 za dug cijeli broj (na primjer, %ld) ili za broj s pomičnim zarezom dvostruke preciznosti (na primjer, % lg ).

primjeri:

» x = 0:pi/10:pi:y-;

» fid = fopen "c:\sin.txt". V);

» fprintf(fid."X5.3f *10.6f\n".y):fclose(fid);

0.000 0.000000

0.314 0.309017

0.628 0.587785

0.942 0.809017

1.257 0.951057

1.571 1.000000

1.885 0.951057

2.199 0.809017

2.513 0.587785

2.827 0.309017

3.142 0.000000

» fid = fopen("c:\sin.txt"."r");

» q=fscanf(fid."*g".):

"q"

ans =

0.3140 0.3090

0.6280 0.5878

0.9420 0.8090

1.2570 0.9511

1.5710 1.0000

1.8850 0.9511

2.1990 0.8090

2.5130 0.5878

2.8270 0.3090

» fgetl(fid)

ans=

3.142 0.000000

» fgets(fid)

ans=

» fclose(fid)

ans=

Pozicioniranje fajla

Prilikom čitanja i pisanja datoteka, oni se konvencionalno predstavljaju kao linearno raspoređeni podaci, slično snimanju na kontinuiranu magnetnu traku. Pozicija sa koje se trenutno čita (ili pozicija sa koje snimanje u toku), određuje se posebnim pokazivač. Datoteke sekvencijalnog pristupa se gledaju striktno od početka do kraja, au fajlovima sa slučajnim pristupom, pokazivač se može postaviti bilo gdje odakle se pišu ili čitaju podaci iz datoteke.

Dakle, pokazivač omogućava pozicioniranje datoteke. Postoji niz funkcija pozicioniranja:

    Eofstat = feof(fid) - provjerava da li je dostignut kraj datoteke sa id fid. Vraća 1 ako je pokazivač na kraju datoteke, 0 u suprotnom;

    Poruka = ​​ferror(fid) - Vraća detalje greške kao niz poruke. Argument fid je identifikator otvori datoteku(pogledajte funkciju fopen za detaljan opis);

    Poruka = ​​f error (f id,"clear") - briše indikator greške za dati fajl;

    Ferror(.) - vraća broj greške errnum poslednja operacija I/O za dati fajl.

Ako je posljednja I/O operacija izvedena na datoteci koju je specificirao fid bila uspješna, poruka je prazan niz, a errnum je 0.

Vrijednost errnum različita od nule označava da se dogodila greška tijekom posljednje I/O operacije. Parametar poruke sadrži niz koji sadrži informacije o prirodi greške koja se dogodila.

primjer:

» fid=fopen("c:\example"."a+")

fid=

» t= fread(3,)

Prazna matrica: 4-by-0

» feror(3)

ans=

Da li je fajl otvoren za čitanje? . . .

    frewind(fid) - postavlja pokazivač pozicije na početak datoteke sa fid identifikatorom;

    Status - fseekCfid,offset,origin) - postavlja pokazivač u datoteci sa identifikatorom fid na navedenu poziciju - po bajtu, specificirano parametrom pomak u odnosu na ishodište.

Argumenti:

    fid je identifikator datoteke koji vraća funkcija fopen;

    offset - vrijednost koja se tumači na sljedeći način:

    • offset>0 - mijenja poziciju pokazivača na pomak bajtova prema kraju datoteke;

      offset=0 - ne mijenja poziciju pokazivača;

      offset<0 - изменяет позицию указателя на offset байт в направлении к началу файла;

    Porijeklo je argument koji uzima sljedeće vrijednosti:

    • "bof ili -1 - početak datoteke;

      "cof" ili 0 - trenutna pozicija pokazivača u datoteci;

      "eof" ili 1 - kraj datoteke;

    status je izlazni argument. Uzima vrijednost 0 ako je operacija fseek bila uspješna, i -1 u suprotnom. Ako dođe do greške, koristite funkciju ferror za više informacija;

    position=ftel I (fid) - vraća poziciju pokazivača datoteke za datoteku sa fid id-om dobijenim pomoću fopen funkcije. Izlazni argument pozicije je nenegativan cijeli broj koji specificira poziciju pokazivača u bajtovima u odnosu na početak datoteke. Ako je zahtjev bio neuspješan, pozicija uzima vrijednost -1. Koristite funkciju ferror da prikažete prirodu greške.

primjeri:

» f id-fopen("s:\example"."a+")

fid=

» count = fwrite(3,magic(6))

Broj = 36

» ftelK3)

ans=

» frewind(3):ftell(3)

ans=

» fseek(3.12.0);ftell(3)

ans=

» feof(3)

ans=

» fclose(3)

ans=

    S=sprintf(format,A,...) - formatira podatke u matrici A u formatu specificiranom parametrom formata i od njih kreira string varijablu s;

    SprintfCformat,A....) - slično prethodno opisanoj funkciji, ali dodatno vraća string greške errmsg ako je došlo do greške ili prazan string u suprotnom. Niz formata definiše sistem brojeva, poravnanje, značajne cifre, širinu polja i druge atribute izlaznog formata. Može sadržavati regularne znakove, kao i specifikacije, znakove za proširenje itd. Funkcija fprintf se ponaša kao ekvivalentna ANSI C funkcija fprintf 0, sa nekim izuzecima i ekstenzijama.

primjeri:

» sprintfC"*0.5g".(l+sqrt(7))/4)

ans =

0.91144

» sprintfc "%s","Hej")

ans =

Hej

Funkcija sscanf je slična funkciji fscanf, osim što čita podatke iz MATLAB sistemske karakterne varijable, a ne iz datoteke.

    A = sscanf (s, format) - čita podatke iz karakterne varijable s, pretvara ih prema vrijednosti formata i na osnovu ovih podataka kreira matricu A. Parametar formata određuje format podataka koji će se čitati;

    A = sscanf(s, format, size) - čita količinu podataka specificiranu parametrom veličine i konvertuje je u skladu sa nizom formata. Parametar veličine je argument koji specificira količinu podataka za čitanje. Važeće vrijednosti su:

    • n - čitanje n elemenata u vektor kolone;

      inf - pročitajte elemente do kraja karakterne varijable i stavite ih u vektor kolone koji sadrži isti broj elemenata kao u string varijabli;

      Čita onoliko elemenata koliko je potrebno za popunjavanje matrice veličine thp. Popunjavanje se vrši u kolonama. Vrijednost n (ali ne!) može uzeti vrijednost Inf.

    Sscanf(...) - čita podatke iz karakterne varijable s, pretvara ih prema vrijednosti formata i vraća u matricu A. Parametar brojanja je output.argument koji vraća broj uspješno pročitanih elemenata; errmsg je izlazni argument koji vraća string greške ako je došlo do greške i prazan string u suprotnom; nextindex je izlazni argument koji sadrži broj jedan veći od broja znakova u s.

Niz formata se sastoji od normalnih znakova i specifikacija. Specifikatori određuju tip podataka i uključuju znak %, opcija širine polja i format znakova. Objašnjenja se mogu naći u opisu funkcije fscanf.

primjer:

» s = "4,83 3,16 22 45";

» = sscanf(s. "%f")

A =

4.8300 - 3.1600

22.0000

45.0000

Err=

sljedeći =

Specijalizovani fajlovi

Funkcije u nastavku su za neke specijalizovani fajlovi:

    M = dlmread(ime datoteke, graničnik) Čita podatke iz naziva datoteke sa ASCII graničnikom, koristeći graničnik, u niz M. Koristite "\t" i da navedete znak tabulatora kao graničnik;

    M = dlmreadCfilename.delimiter,r.c) - čita podatke iz naziva datoteke sa ASCII graničnikom, koristeći graničnik, u niz M, počevši od pomaka r (po redovima) i c (po kolonama). Parametri r i c su bazirani na nuli, tako da r=0, c=0 odgovara prvoj vrijednosti u datoteci;

    M = dlmreadCfilename, deli mi ten, r, c, range) - uvozi indeksirani ili imenovani opseg ASCII razgraničenih podataka. Da biste koristili raspon ćelija, trebate definirati parametar raspona kao raspon = [TopRow. Lijeva kolona. BottomRow, Right Column].

Argumenti funkcije dlmread su sljedeći:

    Delimiter - znak koji razdvaja pojedinačne elemente matrice u ASCII tabeli;

    (,) - zadani separator;

    R, c - ćelija tabele iz koje se uzimaju elementi matrice koji odgovaraju elementima u gornjem levom uglu tabele;

    raspon - vektor koji definira raspon ćelija proračunske tablice.

Naredba dlmwrite pretvara MATLAB matricu u ASCII razgraničenu datoteku koju mogu čitati programi za proračunske tablice:

    Dl mwri te (f i 1 ename. A. delimiter) - upisuje matricu A u gornju lijevu ćeliju tabele sa imenom datoteke, koristeći graničnik za razdvajanje elemenata matrice. Koristite "U" da kreirate fajl sa stavkama razdvojenim tabulatorima. Svi elementi sa vrijednošću 0 su izostavljeni. Na primjer, niz će se pojaviti u datoteci kao "1., 2" (ako je graničnik zarez):

    dlmwrite(ime datoteke,A,delimiter, r,c) - Zapisuje matricu A u ime datoteke, počevši od ćelije specificirane sa r i c, koristeći graničnik;

    info=imfinfo(filename.fmt) - vraća strukturu čija polja sadrže informacije o slici u grafičkoj datoteci. Argument filename je string koji specificira ime grafičke datoteke, fmt je string koji specificira format datoteke. Datoteka mora biti u trenutnom direktoriju ili u direktoriju specificiranom u MATLAB stazi. Ako imflinfo ne može pronaći datoteku pod nazivom filename, traži datoteku pod nazivom filename.fmt.

U tabeli. Slika 19.5 prikazuje moguće vrijednosti za argument fmt.

Tabela 19.5. Podržani grafički formati i njihovi simboli

Ako je ime datoteke TIFF ili HDF datoteka koja sadrži više od jedne slike, tada je 1 nf o niz struktura sa zasebnim elementom (tj. individualnom strukturom) za svaku sliku u datoteci. Na primjer, info(3) bi tada sadržavao informacije o trećoj slici u datoteci. Skup polja u info ovisi o konkretnoj datoteci i njenom formatu. Međutim, prvih devet polja su uvijek ista. U tabeli. 19.6 navodi ova polja i opisuje njihova značenja.

Tabela 19.6. Polja informacijske strukture i njihova značenja

Polje Značenje
ime dokumenta Niz koji sadrži ime datoteke; ako datoteka nije u trenutnom direktoriju, red sadrži punu putanju do datoteke
FileModDate Niz koji sadrži datum posljednje izmjene datoteke
Veličina fajla Cijeli broj koji označava veličinu datoteke u bajtovima
Format Niz koji sadrži format datoteke specificiran parametrom fmt; za JPEG i TIFF datoteke vraća se vrijednost od tri znaka
FormatVersion Niz ili broj koji opisuje verziju formata
Širina Cijeli broj koji specificira širinu slike u pikselima
Visina Cijeli broj koji označava visinu slike u pikselima
BitDepth Cijeli broj koji označava broj bitova po pikselu
tip boje Niz koji opisuje tip slike: "truecolor" za RGB sliku, "sive boje" za sliku u nijansama sive ili "indeksirano" za indeksiranu sliku u boji

    Info = imfinfo(ime datoteke) - pokušava odrediti format datoteke iz sadržaja. primjer:

» info = irrifinfo("C:\exhibition\Internet.bmp")

info=

Naziv datoteke: "C:\Exhibition\Internet.bmp"

Veličina fajla: 481078

Format: "bmp"

FormatVersion: "Verzija 3 (Microsoft Windows 3.x)"

ili prave boje (RGB) slike klase uint8, naredba imwrite upisuje stvarne vrijednosti niza u datoteku. Ako je A klase double, naredba imwrite nadjačava vrijednosti u nizu prije pisanja, koristeći konverziju uint8(round(255*A)). Ova operacija pretvara brojeve s pomičnim zarezom u rasponu u 8-bitne cijele brojeve u rasponu. Važeće vrijednosti za ftnt parametar su iste kao one koje se koriste u naredbi imfinfo;

    imwrite(X,map,filename,fmt) - Zapisuje indeksiranu sliku u X nizu i odgovarajuću paletu boja u ime datoteke datoteke. Ako X sadrži sliku klase uint8, naredba imwrite upisuje stvarne vrijednosti niza u datoteku. Ako je X klase double, naredba imwrite nadjačava vrijednosti u nizu prije pisanja, koristeći konverziju uintS(X-l). Tara paleta mora biti klase dvostruka; funkcija imwrite redefinira vrijednosti za tar koristeći konverziju uint8(round (255*map));

    imwrite(....filename) - Zapisuje sliku u naziv datoteke u formatu određenom ekstenzijom datoteke. Ekstenzija može biti jedna od dozvoljenih vrijednosti za parametar fmt;

    imwrite(....Parameter, Value....) definira parametre koji kontroliraju različita svojstva izlazne datoteke. Parametri se koriste za HDF, JPEG i TIFF datoteke;

    M = wklread(ime datoteke) - čita Lotusl23 (WK1) tabelu u matricu M;

    M = wklread(filename.r.c) - čita podatke počevši od ćelije definisane sa (r,c). Parametri r i c su bazirani na nuli, tako da r=0, c=0 definiraju prvu ćeliju u datoteci;

    M = wklread(ime datoteke, r, c, raspon) - čita raspon vrijednosti specificiranih parametrom raspona, gdje raspon može biti predstavljen u jednom od sljedećih oblika:

    • vektor sa četiri elementa koji definira raspon ćelija u formatu [top_row. lijevi_stupac, donji_red, desni_stupac];

      raspon ćelija definiranih nizom, kao što je "A1...C5";

      naziv raspona, definiran kao string, kao što je "Prodaja".

    wklwrite(filename.M) - upisuje vrijednosti matrice M u ime datoteke u tabeli Lotus 123 WK1;

    wklwrite(ime datoteke,M,r,c) Zapisuje podatke počevši od ćelije specificirane sa (r,c). Parametri r i c su bazirani na nuli, tako da r=0, c=0 definiraju prvu ćeliju u tabeli.

U tabeli. 19.7 prikazuje formate slika koji su dostupni za čitanje pomoću funkcije imread. Liste parametara i njihove moguće vrijednosti za funkciju imwrite nalaze se u tabeli. 19.8.

Treba napomenuti da većinu gore navedenih funkcija korisnici rijetko koriste. Ali oni se dosta koriste u sistemske svrhe i od velikog su interesa za stručnjake.

Tabela 19.7. Formati datoteka i njihov kratak opis

Format Opcije
BMP 1-bitne, 4-bitne, 8-bitne i 24-bitne nekomprimirane slike; 4-bitne i 8-bitne slike sa RLE kompresijom
HDF 8-bitne bitmape, sa ili bez palete boja; 24-bitne bitmape
JPEG Bilo koje JPEG slike; JPEG slike sa nekim uobičajenim ekstenzijama
PCX 1-bitne, 8-bitne i 24-bitne slike
TIFF Sve TIFF slike, uključujući !-bitne, 8-bitne i 24-bitne nekomprimirane slike; 1-bitne, 8-bitne i 24-bitne packbit slike; 1-bitne slike sa CCITT kompresijom
XWD 1-bitni i 8-bitni Zpixmaps; XYBitmaps; 1-bitne XYPixmape

Tabela 19.8. Opcije koje se koriste prilikom pisanja grafičkih datoteka

Parametar Značenje Zadana vrijednost
Opcije za HDF datoteke
"kompresija" Jedna od sljedećih vrijednosti: "none", Vie, "jpeg" "rle"
"kvalitet" Broj između 0 i 100; parametar je podržan za "Compression"="jpeg"; što je veći broj, to je veći kvalitet datoteke (manje izobličenja datoteke tokom kompresije) i veća je njena veličina 75
"Način pisanja" Jedna od sljedećih vrijednosti: "overwrite", "append" "prepisati"
Opcije za JPEG datoteke
"kvalitet" Broj između 0 i 100; što je veći broj, to je veći kvalitet datoteke (manje izobličenja prilikom kompresije datoteke) i veća je njena veličina. 75
Opcije za TIFF datoteke
"kompresija" Jedna od sljedećih vrijednosti: "none", "packbits", "ccitt"; vrijednost "ccitt" vrijedi samo za binarne (dvobojne) slike "ccitt" za binarne slike; "packbits" za sve ostale
"Opis" Bilo koja linija; vrijednost polja ImageDescription vraća se naredbom imfinfo Prazan red
"rezolucija" Skalarna vrijednost za rezoluciju u x i y smjerovima
72

Šta smo novo naučili?

U ovoj lekciji smo naučili:

    Otvaranje i zatvaranje fajlova.

    Izvršite operacije nad binarnim i formatiranim datotekama.

    Izvršite pozicioniranje datoteke.

    Primijenite prilagođene datoteke.

Najčešći uzrok problema sa otkrivanjem MATLAB fajlova je jednostavno nedostatak odgovarajućih aplikacija instaliranih na vašem računaru. U ovom slučaju, dovoljno je pronaći, preuzeti i instalirati aplikaciju koja podržava datoteke u MATLAB formatu - takvi programi su dostupni u nastavku.

Sistem pretraživanja

Unesite ekstenziju datoteke

Upomoć

trag

Imajte na umu da se neki kodirani podaci iz datoteka koje naš računar ne čita ponekad mogu vidjeti u Notepadu. Na ovaj način ćemo čitati fragmente teksta ili brojeve - Vrijedi provjeriti da li ova metoda radi i u slučaju MATLAB datoteka.

Šta učiniti ako je aplikacija sa liste već instalirana?

Često se instalirana aplikacija treba automatski povezati sa MATLAB datotekom. Ako se to ne dogodi, MATLAB datoteka se može uspješno povezati ručno s novoinstaliranom aplikacijom. Dovoljno je kliknuti desnim tasterom miša na MATLAB datoteku, a zatim od dostupnih odabrati opciju "Izaberi zadani program". Zatim morate odabrati opciju "Pretraži" i pronaći svoju omiljenu aplikaciju. Učinjene promjene moraju biti odobrene opcijom "OK".

Programi koji otvaraju MATLAB fajl

Windows

Zašto ne mogu da otvorim MATLAB fajl?

Problemi sa MATLAB fajlovima mogu imati i druge osnove. Ponekad čak ni instaliranje softvera koji podržava MATLAB datoteke na vašem računalu neće riješiti problem. Razlog nemogućnosti otvaranja, kao i rada sa MATLAB fajlom, može biti i:

Nedosljedne veze MATLAB datoteka u unosima registra
- oštećenje MATLAB fajla koji otvaramo
- Infekcija MATLAB fajlova (virusi)
- premali računarski resursi
- zastareli drajveri
- uklanjanje MATLAB ekstenzije iz Windows sistemskog registra
- nepotpuna instalacija programa koji podržava MATLAB ekstenziju

Rješavanje ovih problema bi trebalo rezultirati slobodnim otvaranjem i radom sa MATLAB datotekama. U slučaju da računar i dalje ima problema s datotekama, trebate potražiti pomoć stručnjaka koji će utvrditi tačan uzrok.

Moj računar ne prikazuje ekstenzije datoteka, šta da radim?

U standardnim sistemskim postavkama Windows, korisnik računara ne vidi ekstenzije MATLAB datoteka. Ovo se može uspješno promijeniti u postavkama. Samo idite na "Control Panel" i odaberite "View and Personalization". Zatim morate ući u "Opcije mape" i otvoriti "Prikaz". U kartici "Prikaz" postoji opcija "Sakrij ekstenzije poznatih tipova datoteka" - morate odabrati ovu opciju i potvrditi operaciju pritiskom na dugme "OK". U ovom trenutku, sve ekstenzije datoteka, uključujući MATLAB, trebale bi se pojaviti sortirane po imenu datoteke.

). Među alatima opšte namene koji se koriste u hemometriji, MatLab paket zauzima posebno mesto. Njegova popularnost je neobično visoka. To je zato što je MatLab moćna i svestrana višedimenzionalna obrada podataka. Sama struktura paketa čini ga pogodnim alatom za izvođenje matričnih proračuna. Raspon problema koji se mogu proučavati korištenjem MatLaba uključuje: matričnu analizu, obradu signala i slike, neuronske mreže i mnoge druge. MatLab je jezik otvorenog koda visokog nivoa koji omogućava naprednim korisnicima da razumiju programirane algoritme. Jednostavan ugrađeni programski jezik olakšava kreiranje vlastitih algoritama. Za dugi niz godina korištenja MatLaba stvoren je ogroman broj funkcija i ToolBox-a (paketa specijaliziranih alata). Najpopularniji je PLS ToolBox kompanije Eigenvector Research, Inc.

1. Osnovne informacije

1.1. MatLab radno okruženje

Dvaput kliknite na ikonu da pokrenete program. Pred vama će se otvoriti radno okruženje prikazano na slici.

Radni prostor MatLab 6.x malo drugačiji od radnog prostora prethodnih verzija, ima praktičniji interfejs za pristup mnogim pomoćnim elementima

Radni prostor MatLab 6.x sadrži sljedeće elemente:

    alatna traka sa dugmadima i padajućom listom;

    prozor sa karticama Launch Pad i Radni prostor, iz koje možete pristupiti različitim modulima ToolBox-a i sadržaju radnog stola;

    prozor sa karticama istorija komande i trenutni imenik, namenjen za pregled i pozivanje prethodno unetih komandi, kao i za podešavanje trenutnog direktorijuma;

    komandni prozor koji sadrži upit za unos » i trepćući vertikalni kursor;

    statusna linija.

Ukoliko radno okruženje MatLab 6.x nema prozora prikazanih na slici, tada bi trebalo da izaberete odgovarajuće stavke u meniju Prikaz: komandni prozor, Istorija naredbi, Trenutni direktorij, Radni prostor, Launch Pad.

Komande treba ukucati u komandni prozor. Simbol » , koji označava poziv za ulazak u komandnu liniju, nije potrebno kucati. Za pregled radnog prostora zgodno je koristiti trake za pomicanje ili tipke Početna , Kraj , za pomicanje lijevo ili desno i PageUp , PageDown za kretanje gore ili dolje. Ako iznenada, nakon pomicanja po radnom prostoru komandnog prozora, komandna linija sa trepćućim kursorom nestane, samo pritisnite Enter.

Važno je zapamtiti da skup bilo koje naredbe ili izraza mora završiti pritiskom na Enter kako bi MatLab program izvršio ovu naredbu ili procijenio izraz.

1.2. Najjednostavnije kalkulacije

Upišite 1+2 u komandnu liniju i pritisnite Enter. Kao rezultat, u MatLab komandnom prozoru se prikazuje sljedeće:

Rice. 2 Grafički prikaz analize glavnih komponenti

Šta je radio MatLab program? Prvo je izračunao zbir 1+2, zatim je rezultat zapisao u posebnu varijablu ans i ispisao njegovu vrijednost, 3, u komandni prozor. Ispod odgovora je komandna linija sa trepćućim kursorom, što ukazuje da je MatLab spreman za dalje proračune. Možete upisati nove izraze u komandnu liniju i pronaći njihove vrijednosti. Ako želite da nastavite da radite sa prethodnim izrazom, na primer, da izračunate (1+2)/4.5, onda je najlakši način da koristite već postojeći rezultat koji je pohranjen u promenljivoj ans. Ukucajte ans/4.5 (tačka se koristi prilikom unosa decimala) i pritisnite Enter, ispostavilo se

Rice. 3 Grafički prikaz analize glavnih komponenti

1.3. Command echo

Izvršenje svake naredbe u MatLabu je praćeno ehoom. U gornjem primjeru, ovo je odgovor ans = 0,6667. Često eho otežava percepciju rada programa i tada se može isključiti. Da biste to učinili, naredba mora završiti tačkom i zarezom. na primjer

Rice. Primjer unosa funkcije 4 ScoresPCA

1.4. Očuvanje radnog okruženja. MAT fajlovi

Najlakši način da sačuvate sve vrednosti varijabli je da koristite stavku Sačuvaj radni prostor kao u meniju Datoteka. Pojavljuje se okvir za dijalog Save Workspase Variables u kojem se od vas traži da navedete direktorij i ime datoteke. Prema zadanim postavkama, predlaže se spremanje datoteke u radni poddirektorij glavnog MatLab direktorija. Program će rezultate rada pohraniti u datoteku sa ekstenzijom mat. Sada možete zatvoriti MatLab. U sljedećoj sesiji, da biste vratili vrijednosti varijabli, otvorite ovu sačuvanu datoteku koristeći podstavku Otvori menija Datoteka. Sada su sve varijable definirane u posljednjoj sesiji ponovo dostupne. Mogu se koristiti u novounesenim naredbama.

1.5. Časopis

MatLab ima mogućnost da upiše izvršne komande i rezultate u tekstualnu datoteku (vodi dnevnik rada), koji se zatim može pročitati ili odštampati iz uređivača teksta. Za početak evidentiranja koristite naredbu dnevnik. Kao argument komande dnevnik morate navesti ime datoteke u kojoj će se pohraniti dnevnik rada. Naredbe koje se dalje upisuju i rezultati njihovog izvršavanja biće upisani u ovu datoteku, na primjer, niz naredbi

obavlja sljedeće radnje:

    otvara dnevnik u datoteci exampl-1.txt ;

    vrši proračune;

    sprema sve varijable u MAT fajl work-1.mat ;

    čuva zapisnik u datoteci exampl-1.txt u radni poddirektorijum MatLab root direktorijuma i zatvara MatLab;

Pogledajte sadržaj datoteke exampl-1.txt u nekom uređivaču teksta. Datoteka će sadržavati sljedeći tekst:

a1=3;
a2=2,5;
a3=a1+a2

Sačuvaj rad-1
odustati

1.6. Sistem pomoći

MatLab Help prozor se pojavljuje nakon odabira opcije Help Window iz menija Help ili pritiskom na dugme za pitanje na traci sa alatkama. Ista operacija se može izvesti upisivanjem naredbe helpwin. Da biste prikazali prozor pomoći za pojedinačne teme, otkucajte helpwin tema. Prozor pomoći vam pruža iste informacije kao i komanda pomoći, ali prozorsko sučelje olakšava povezivanje s drugim temama pomoći. Koristeći adresu web stranice Math Works, možete otići na server Math Works i dobiti najnovije informacije o pitanjima koja vas zanimaju. Možete provjeriti nove softverske proizvode ili pronaći odgovore na svoje probleme na stranici tehničke podrške.

2. Matrice

2.1. Skalari, vektori i matrice

U MatLabu možete koristiti skalare, vektore i matrice. Da biste unijeli skalar, dovoljno je dodijeliti njegovu vrijednost nekoj varijabli, na primjer

Imajte na umu da MatLab razlikuje velika i mala slova, tako da su p i P različite varijable. Za unos nizova (vektora ili matrica), njihovi elementi se stavljaju u uglaste zagrade. Dakle, za unos vektora reda veličine 1x3 koristi se sljedeća naredba u kojoj su elementi reda odvojeni razmacima ili zarezima.

Prilikom unosa vektora stupca, elementi se odvajaju tačkom i zarezom. Na primjer,

Pogodno je unositi male matrice direktno iz komandne linije. Kada se unese, matrica se može posmatrati kao vektor kolone, čiji je svaki element vektor reda.

ili se matrica može tretirati kao vektor reda, čiji je svaki element vektor stupca.

2.2. Pristup elementima

Elementima matrice se pristupa pomoću dva indeksa - brojeva reda i stupaca, zatvorenih u zagrade, na primjer, naredba B(2,3) će vratiti element drugog reda i treće kolone matrice B. Da biste odabrali kolonu ili red iz matrice, koristite broj stupca ili reda matrice kao jedan od indeksa, a drugi indeks zamijenite dvotočkom. Na primjer, upišimo drugi red matrice A u vektor z

Također možete odabrati blokove matrica koristeći dvotočku. Na primjer, izaberite iz matrice P blok označen bojom

Ako trebate vidjeti varijable radnog okruženja, u komandnoj liniji trebate upisati naredbu whos .

Vidi se da radno okruženje sadrži jedan skalar (p), četiri matrice (A, B, P, P1) i vektor reda (z).

2.3. Osnovne matrične operacije

Kada koristite matrične operacije, treba imati na umu da matrice moraju biti iste veličine za sabiranje ili oduzimanje, a pri množenju broj stupaca prve matrice mora biti jednak broju redova druge matrice. Sabiranje i oduzimanje matrica, kao i brojeva i vektora, vrši se pomoću znakova plus i minus.

a množenje je označeno zvjezdicom *. Uvodimo matricu 3×2

Množenje matrice brojem se također vrši pomoću zvjezdice, a možete množiti brojem i desno i lijevo. Podizanje kvadratne matrice na cjelobrojni stepen vrši se pomoću ^ operatora

Provjerite rezultat množenjem matrice P sama po sebi.

2.4. Kreiranje matrica posebne vrste

Popunjavanje pravokutne matrice nulama vrši se ugrađenom funkcijom nule

Matrica identiteta se kreira pomoću funkcije oko

Matrica koja se sastoji od jedinica formira se kao rezultat pozivanja funkcije one

MatLab pruža mogućnost popunjavanja matrica slučajnim brojevima. Rezultat funkcije rand je matrica brojeva ravnomjerno raspoređenih između nule i jedan, i funkcija randn- matrica brojeva raspoređenih prema normalnom zakonu sa nultom srednjom i jediničnom varijansom.

Funkcija dijag formira dijagonalnu matricu od vektora, postavljajući elemente dijagonalno.

2.5. Matrični proračuni

MatLab sadrži mnogo različitih funkcija za rad sa matricama. Tako se, na primjer, transpozicija matrice vrši pomoću apostrofa "

Pronalaženje inverzne matrice vrši se pomoću funkcije inv za kvadratne matrice

3. Integracija MatLab-a i Excel-a

Integracija MatLab-a i Excel-a omogućava korisniku Excel-a pristup brojnim MatLab funkcijama za obradu podataka, različite proračune i vizualizaciju rezultata. Dodatak excllink.xla implementira ovo Excel poboljšanje. Za vezu između MatLab-a i Excel-a definirane su posebne funkcije.

3.1. Excel konfiguracija

Prije postavljanja Excela za rad sa MatLab-om, trebali biste se uvjeriti da je Excel Link uključen u instaliranu verziju MatLaba. Poddirektorij exclink glavnog MatLab direktorija ili poddirektorij kutije alata mora sadržavati datoteku dodatka excllink.xla. Pokrenite Excel i odaberite Dodaci iz izbornika Alati. Otvoriće se dijaloški okvir koji sadrži informacije o trenutno dostupnim dodacima. Koristeći dugme Pregledaj, odredite putanju do datoteke excllink.xla. Niz će se pojaviti na listi dodataka u dijaloškom okviru. Excel Link 2.0 za upotrebu sa MatLabom sa postavljenom zastavom. Kliknite na OK, potrebni dodatak je dodan u Excel.

Imajte na umu da Excel sada ima Excel Link traku sa alatkama koja sadrži tri dugmeta: putmatrix , getmatrix , evalstring . Ova dugmad implementiraju osnovne radnje potrebne za implementaciju odnosa između Excel-a i MatLab-a – razmjenu matričnih podataka, te izvršavanje MatLab komandi iz Excel okruženja. Kada ponovo pokrenete Excel, dodatak excllink.xla se automatski povezuje.

Koordinirani rad Excel-a i MatLab-a zahtijeva još nekoliko postavki koje su standardno prihvaćene u Excel-u (ali se mogu promijeniti). Iz menija Alati idite na Opcije, otvara se okvir za dijalog Opcije. Odaberite karticu Općenito i provjerite je li zastavica referentnog stila R1C1 isključena, tj. ćelije su označene brojevima A1, A2 itd. Na kartici Uređivanje mora biti postavljena zastavica Premjesti odabir nakon Enter.

3.2. Razmjena podataka između MatLab-a i Excel-a

Pokrenite Excel, provjerite da li su sve potrebne postavke urađene kao što je opisano u prethodnom dijelu (MatLab mora biti zatvoren). Unesite matricu u ćelije A1 do C3, koristite tačku da odvojite decimale kako to zahtijeva Excel.

Odaberite podatke ćelije u listu i pritisnite dugme putmatrix, pojavljuje se Excel prozor sa upozorenjem da MatLab nije pokrenut. Kliknite OK, pričekajte da se MatLab otvori.

Pojavljuje se Excel dijaloški okvir sa linijom za unos za specificiranje imena MatLab varijable radnog prostora u koju treba izvesti podatke iz odabranih Excel ćelija. Unesite, na primjer, M i zatvorite prozor tipkom OK. Idite na MatLab komandni prozor i uvjerite se da je varijabla M kreirana u radnom okruženju, koja sadrži niz tri po tri:

Uradite neke operacije u MatLabu sa matricom M, na primjer, invertirajte je.

Zovi inv da se invertuje matrica, kao i svaka druga MatLab naredba, može se uraditi direktno iz Excel-a. Pritiskom na dugme evalstring koje se nalazi na panelu Excel Link dolazi do pojave dijaloškog okvira u čiju liniju za unos treba upisati naredbu MatLab

IM=inv(M) .

Rezultat je sličan onome koji se dobije prilikom izvršavanja naredbe u MatLab okruženju.

Vratite se u Excel, učinite ćeliju A5 trenutnom ćelijom i kliknite na dugme getmatrix. Pojavljuje se dijaloški okvir sa redom za unos u koji treba da unesete naziv varijable koju želite uvesti u Excel. U ovom slučaju, varijabla je IM. Kliknite OK , elementi inverzne matrice se unose u ćelije A5 do A7.

Dakle, da biste izvezli matricu u MatLab, trebalo bi da izaberete odgovarajuće ćelije Excel lista, a da biste uvezli, samo treba da navedete jednu ćeliju, koja će biti gornji levi element uvezenog niza. Preostali elementi će biti upisani u ćelije lista u skladu sa veličinom niza, zamenjujući podatke sadržane u njima, tako da treba da budete oprezni kada uvozite nizove.

Gornji pristup je najlakši način za razmjenu informacija između aplikacija – izvorni podaci se nalaze u Excelu, zatim se izvoze u MatLab, tamo se na neki način obrađuju, a rezultat se uvozi u Excel. Korisnik prenosi podatke koristeći dugmad na traci sa alatkama Excel Link. Informacije se mogu predstaviti u obliku matrice, tj. pravougaona površina radnog lista. Ćelije raspoređene u red ili kolonu se izvoze u vektore reda i kolone u MatLab-u, respektivno. Slično, dolazi do uvoza vektora redova i vektora stupaca u Excel.

4. Programiranje

4.1. M-fajlovi

Rad iz MatLab komandne linije je težak ako trebate unijeti mnogo naredbi i često ih mijenjati. Vođenje dnevnika sa komandom dnevnik i održavanje radnog okruženja malo olakšavaju posao. Najprikladniji način za izvršavanje grupa MatLab komandi je korištenje M-fajlova, u koje možete upisivati ​​komande, izvršavati ih sve odjednom ili u dijelovima, pohranjivati ​​ih u datoteku i koristiti ih kasnije. M-file editor je dizajniran za rad sa M-datotekama. Pomoću njega možete kreirati vlastite funkcije i pozivati ​​ih, uključujući i iz komandnog prozora.

Proširite meni Datoteka glavnog MatLab prozora i u Novoj stavci izaberite podstavku M-datoteka. Nova datoteka se otvara u M-file editor prozoru prikazanom na slici.

Postoje dvije vrste M-fajlova u MatLabu: program-file ( Script M-Files) koji sadrži niz naredbi i funkcijsku datoteku, ( Funkcija M-Files) koji opisuju korisnički definirane funkcije.

4.2. Program datoteka

Ukucajte komande u editoru koje dovode do izgradnje dva grafikona u jednom grafičkom prozoru

Sačuvajte datoteku sada pod imenom mydemo.m u radni poddirektorijum glavnog MatLab direktorijuma tako što ćete izabrati stavku Sačuvaj kao iz menija Datoteka urednika. Da biste pokrenuli sve komande sadržane u datoteci, izaberite stavku Pokreni iz menija Debug. Na ekranu će se pojaviti grafički prozor. Slika 1, koji sadrži grafove funkcija.

Komande programa datoteke izlaze u komandni prozor. Da biste potisnuli izlaz, završite naredbe tačkom i zarezom. Ako se napravi greška pri kucanju i MatLab ne može prepoznati komandu, tada se naredbe izvršavaju do pogrešno unesene, nakon čega se u komandnom prozoru prikazuje poruka o grešci.

Vrlo zgodna karakteristika koju pruža uređivač M-fajlova je izvršavanje dijela naredbi. Zatvorite grafički prozor Slika 1. Birajte mišem dok držite pritisnutu lijevu tipku ili tipkama sa strelicama dok držite pritisnutu tipku Shift, prve četiri komande i izvršite ih iz stavke Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon, koji odgovara izvršenim komandama. Zapamtite da da biste izvršili neke od naredbi, morate ih odabrati i pritisnuti tipku F9.

Odvojeni blokovi M-datoteke mogu biti opremljeni komentarima koji se preskaču tokom izvršavanja, ali su zgodni za rad sa M-datotekom. Komentari počinju sa znakom procenta i automatski su označeni zelenom bojom, na primjer:

Otvaranje postojeće M-datoteke vrši se pomoću stavke Otvori menija Datoteka radnog okruženja ili uređivača M-fajla.

4.3. funkcija datoteke

Datotečni program razmatran iznad je samo niz MatLab komandi, on nema ulazne i izlazne argumente. Da biste koristili numeričke metode i prilikom programiranja vlastitih aplikacija u MatLab-u, morate biti u mogućnosti kreirati funkcije datoteka koje izvode potrebne akcije s ulaznim argumentima i vraćaju rezultat akcije u izlaznim argumentima. Pogledajmo nekoliko jednostavnih primjera da bismo razumjeli kako raditi s funkcijama datoteka.

Prilikom predobrade podataka multivarijantne analize, kemometrija često koristi centriranje. Ima smisla jednom napisati funkcijsku datoteku, a zatim je pozvati gdje god je potrebno centriranje. Otvorite novu datoteku u uređivaču M-datoteka i otkucajte

Riječ funkcija u prvom redu navodi da ova datoteka sadrži funkcijsku datoteku. Prvi red je zaglavlje funkcije, koje sadrži naziv funkcije i listu ulaznih i izlaznih argumenata. U primjeru, ime funkcije je centriranje, jedan ulazni argument je X, a jedan izlazni argument je Xc. Nakon zaglavlja slijede komentari, a zatim tijelo funkcije (u ovom primjeru sastoji se od dva reda), gdje se izračunava njena vrijednost. Važno je da se izračunata vrijednost upiše u Xc. Ne zaboravite da uključite tačku i zarez kako biste spriječili da se suvišne informacije prikazuju na ekranu. Sada spremite datoteku u svoj radni direktorij. Imajte na umu da odabir Sačuvaj ili Sačuvaj kao iz menija Datoteka otvara dijaloški okvir za spremanje datoteke, čije polje Ime datoteke već sadrži centrirano ime. Nemojte ga mijenjati, sačuvajte funkcijsku datoteku u datoteku s predloženim imenom!

Sada se kreirana funkcija može koristiti na isti način kao i ugrađene sin , cos i druge. Poziv vlastitih funkcija može se izvršiti iz fajl-programa i iz druge fajl-funkcije. Pokušajte sami napisati funkcijski fajl koji će skalirati matrice, tj. podijelite svaki stupac sa standardnom devijacijom za tu kolonu.

Moguće je napisati funkcijsku datoteku s višestrukim ulaznim argumentima, koji se nalaze u listi razdvojenoj zarezima. Također možete kreirati funkcije koje vraćaju više vrijednosti. Da biste to učinili, izlazni argumenti se dodaju, odvojeni zarezima, na listu izlaznih argumenata, a sama lista je zatvorena u uglastim zagradama. Dobar primjer je funkcija koja pretvara vrijeme dato u sekundama u sate, minute i sekunde.

Kada se pozivaju funkcije datoteke s više izlaznih argumenata, rezultat bi trebao biti zapisan u vektor odgovarajuće dužine.

4.4 Kreiranje grafikona

MatLab ima široke mogućnosti za grafičko predstavljanje vektora i matrica, kao i za kreiranje komentara i štampanje grafova. Hajde da opišemo nekoliko važnih grafičkih funkcija.

Funkcija plot ima različite oblike povezane sa ulaznim parametrima, na primjer plot(y) proizvodi grafiku y elemenata u odnosu na njihove indekse u komadima. Ako su dva vektora data kao argumenti, tada će plot(x,y) prikazati y u odnosu na x. Na primjer, za iscrtavanje funkcije sin u rasponu od 0 do 2π, učinit ćemo sljedeće

Program je napravio graf zavisnosti koji se prikazuje u prozoru Slika 1

MatLab automatski dodjeljuje različitu boju svakom grafikonu (osim kada to radi korisnik), što omogućava razlikovanje skupova podataka.

Tim Čekaj omogućava vam da dodate krive postojećem grafikonu. Funkcija podzaplet omogućava vam da prikažete više grafikona u jednom prozoru

4.5 Štampanje grafikona

Stavka Štampanje u meniju Datoteka i naredba print print MatLab grafike. Meni Štampanje otvara dijaloški okvir koji vam omogućava da izaberete uobičajene standardne opcije štampanja. Tim print pruža veću fleksibilnost u izlazu podataka i omogućava vam da kontrolišete štampanje iz M-fajlova. Rezultat se može poslati direktno na podrazumevani štampač ili sačuvati u unapred definisanom fajlu.

5. Primjeri programa

Ovaj odjeljak navodi najčešće algoritme koji se koriste u analizi multivarijantnih podataka. Razmatraju se kako najjednostavnije metode transformacije podataka - centriranje i skaliranje, tako i algoritmi za analizu podataka - PCA, PLS.

5.1. Centriranje i skaliranje

Često analiza zahtijeva transformaciju izvornih podataka. Najčešće korištene metode transformacije podataka su centriranje i skaliranje svake varijable prema standardnoj devijaciji. U funkcijskom kodu za centriranje je data matrica. Stoga je ispod prikazan samo kod funkcije, koji vage podaci. Imajte na umu da originalna matrica mora biti centrirana

funkcija Xs = skaliranje(X)
% skaliranja: izlazna matrica je Xs
% matrica X mora biti centrirana

Xs = X * inv(diag(std(X)));

%kraj skaliranja

5.2. SVD/PCA

Najpopularniji način kompresije podataka u multivarijantnoj analizi je analiza glavnih komponenti (PCA). Sa matematičke tačke gledišta, PCA je dekompozicija originalne matrice X, tj. predstavljajući ga kao proizvod dvije matrice T i P

X = TP t+ E

Matrix T naziva se matrica rezultata (skora), matrica je ​​matrica reziduala.

Najjednostavniji način za pronalaženje matrica T i P- koristiti SVD dekompoziciju kroz standardnu ​​MatLab funkciju koja se zove svd .

funkcija = pcasvd(X)

Svd(X);
T=U*D;
P=V;

%kraj pcasvd

5.3 PCA/NIPALS

Za izradu PCA rezultata i opterećenja koristi se NIPALS rekurzivni algoritam, koji izračunava jednu komponentu u svakom koraku. Prvo originalna matrica X transformira se (barem - centriran; vidi) i pretvara se u matricu E 0 , a=0. Zatim se primjenjuje sljedeći algoritam.

t 2. str t = t t Ea / t t t 3. str = str / (str t str) ½ 4. t = Ea str / str t str 5. Provjerite konvergenciju, ako ne, idite na 2

Nakon izračunavanja sljedećeg ( a th) komponente, pretpostavljamo ta=t i stra=str E a+1 = Eat str a na a+1.

Šifru NIPALS algoritma mogu napisati sami čitaoci, au ovom priručniku autori predstavljaju svoju verziju. Prilikom izračunavanja PCA, možete unijeti broj glavnih komponenti (broj varijablePC). Ako nije poznato koliko komponenti je potrebno, treba da napišete = pcanipals (X) na komandnoj liniji i tada će program postaviti broj komponenti jednak najmanjoj od originalnih dimenzija matrice X.

funkcija = pcanipals(X, brojPC)

% obračun broja komponenti
= veličina(X); P=; T=;

Ako je dužina (broj PC) > 0
pc = brojPC(1);
elseif (dužina(brojPC) == 0) & X_r< X_c
pc = X_r;
ostalo
pc = X_c;
kraj;

za k = 1:kom
P1 = rand(X_c, 1); T1=X*P1; d0 = T1"*T1;
P1 = (T1" * X/(T1" * T1))"; P1 = P1/norma(P1); T1 = X * P1; d = T1" * T1;

Dok je d - d0 > 0,0001;
P1 = (T1" * X/(T1" * T1)); P1 = P1/norma(P1); T1=X*P1; d0 = T1"*T1;
P1 = (T1" * X/(T1" * T1)); P1 = P1/norma(P1); T1=X*P1; d = T1"*T1;
kraj

X = X - T1 * P1; P = kat(1, P, P1"); T = ;
kraj

Naučite kako izračunati PCA s dodatkom Chemometrics u vodiču

5.4PLS1

Najpopularnija metoda za multivarijantnu kalibraciju je metoda projekcije na latentne strukture (PLS). Ova metoda vrši simultanu dekompoziciju prediktorske matrice X i matrice odgovora Y:

X=TP t+ E Y=UQ t+ F T=XW(P t W) –1

Projekcija je konstruisana na konzistentan način, kako bi se maksimizirala korelacija između odgovarajućih vektora X-računi ta i Y-računi ua. Ako je blok podataka Y uključuje više odgovora (tj. K>1), moguće je konstruisati dvije projekcije početnih podataka – PLS1 i PLS2. U prvom slučaju, za svaki od odgovora y k konstruiše se sopstveni projekcijski podprostor. Istovremeno, računi T (U) i opterećenja P (W, Q) zavisi od toga koji se odgovor koristi. Ovaj pristup se naziva PLS1. Za metodu PLS2 izgrađen je samo jedan prostor za projekciju, koji je zajednički za sve odgovore.

Detaljan opis PLS metode je dat u ovoj knjizi Za konstruisanje PLS1 rezultata i opterećenja koristi se rekurzivni algoritam. Prvo originalne matrice X i Y centar

= mc(X);
= mc(Y);

i pretvaraju se u matricu E 0 i vektor f 0 , a=0. Zatim se na njih primjenjuje sljedeći algoritam

1. w t = fa t E a 2. w = w / (w t w) ½ 3. t = Ea w 4. q = t t fa / t t t 5. u = qfa / q 2 6. str t = t t Ea / t t t

Nakon izračunavanja sljedećeg ( a th) komponente, pretpostavljamo ta=t i stra=str. Da biste dobili sljedeću komponentu, morate izračunati ostatke E a+1 = Eat str t i primijeniti isti algoritam na njih, zamjenjujući indeks a na a+1.

Evo koda za ovaj algoritam, preuzetog iz knjige

funkcija = pls(x, y)
%PLS: izračunava PLS komponentu.
%Izlazni vektori su w, t, u, q i p.
%
% Odaberite vektor iz y kao početni vektor u.

u = y(:, 1);

% Kriterijum konvergencije je postavljen veoma visoko.
cri = 100;

% Naredbe odavde do kraja se ponavljaju do konvergencije.
dok (cri > 1e - 10)

% Svaki početni vektor u se čuva kao ustar.
uold = u; w = (u" * x)"; w = w/norm(w);
t = x*w; q = (t" * y)"/(t" * t);
u = y * q/(q" * q);

% Kriterij konvergencije je norma uold podijeljena normom u.
kri = norma(uold - u)/norma(u);
kraj;

% Nakon konvergencije, izračunajte p.
p = (t" * x)"/(t" * t);

% Kraj pls

O izračunavanju PLS1 s dodatkom HemometrijaDodati opisano u priručniku Metode projekcije u Excelu.

5.5PLS2

Za PLS2, algoritam je sljedeći. Prvo originalne matrice X i Y transformiraju (barem - centar; vidi), i pretvaraju se u matrice E 0 i F 0 , a=0. Zatim se na njih primjenjuje sljedeći algoritam.

1. Odaberite početni vektor u 2. w t = u t E a 3. w = w / (w t w) ½ 4. t = Ea w 5. q t = t t Fa / t t t 6. u = Fa q/ q t q 7. Provjerite konvergenciju, ako ne, idite na 2 8. str t = t t Ea / t t t

Nakon izračunavanja sljedećeg ( a th) PLS2 komponente moraju biti postavljene: ta=t, stra=p,wa=w, ua=u i q a = q. Da biste dobili sljedeću komponentu, morate izračunati ostatke E a+1 = Eatp t and Fa +1 = F atq t i primijeniti isti algoritam na njih, zamjenjujući indeks a na a+1.

Evo koda, koji je također pozajmljen iz knjige.

funkcija = pls(x, y, a)
% PLS: izračunava PLS komponentu.
% Izlazne matrice su W, T, U, Q i P.
% B sadrži koeficijente regresije i SS sume
% kvadrata za ostatke.
% a je broj komponenti.
%
% Za komponente: koristite sve naredbe za kraj.

Za i=1:a
% Izračunajte zbir kvadrata. Koristite funkciju ss.
sx = ;
sy = ;

% Koristite funkciju pls za izračunavanje jedne komponente.
= pls(x, y);

% Izračunajte ostatke.
x = x - t * p";
y = y - t * q";

% Sačuvajte vektore u matricama.
W = ;
T = ;
U = ;
Q = ;
P = ;
kraj;

% Izračunajte koeficijente regresije nakon petlje.
B=W*inv(P"*W)*Q";

% Dodajte konačni preostali SS zbroju vektora kvadrata.
sx=;
sy=;

% Napravite matricu ss vektora za X i Y.
SS = ;

% Izračunajte udio korištenog SS.
= veličina (SS);
tt = (SS * dijag(SS(1,:).^(-1)) - one(a, b)) * (-1)

%Kraj plsr

funkcija = ss(x)
%SS: izračunava zbir kvadrata matrice X.
%

ss=suma(suma(x. * x));
%kraj ss

O izračunavanju PLS2 s dodatkom HemometrijaDodati opisano u priručniku Metode projekcije u Excelu.

Zaključak

MatLab je veoma popularan alat za analizu podataka. Prema istraživanju, koristi ga do trećina svih istraživača, dok program Unsrambler koristi samo 16% naučnika. Glavni nedostatak MatLaba je njegov visoka cijena. Osim toga, MatLab je dobar za rutinske proračune. Nedostatak interaktivnosti čini ga nezgodnim prilikom izvođenja pretraživanja, istraživačkih proračuna za nove, neistražene nizove podataka.

Top Related Articles