Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 10
  • Otvaranje pdf datoteka u matlabu. Osnove programiranja u MatLabu

Otvaranje pdf datoteka 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-datoteke) i ne dopuštaju 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 stvorili drugi softverskih proizvoda za daljnju obradu rezultata u MatLabu. U tu svrhu razvijene su funkcije

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

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

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

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

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

Tablica 5.1. Načini rukovanja datotekama u MatLabu

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

opis

pisati (briše prethodni sadržaj datoteke)

dodaj (kreira datoteku ako ne postoji)

čitanje i pisanje (ne stvara datoteku ako ne postoji)

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

pročitaj i dodaj (stvara datoteku ako ne postoji)

dodatni parametar, što znači rad s 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("moja_datoteka.dat", "wb"); % otvorene datoteke za pisanje

error("Datoteka nije otvorena");
kraj

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

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

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

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

U gornjem primjeru, broj elemenata (pet) je eksplicitno naveden za čitanje iz datoteke. Međutim, često ukupan broj elemenata nije poznat unaprijed ili se mijenja tijekom programa. U tom slučaju, bilo bi bolje čitati podatke iz datoteke dok se ne dođe do kraja datoteke. MatLab ima funkciju za provjeru je li dosegnut 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("moja_datoteka.dat", "rb"); % otvorene datoteke za čitanje
ako je fid == -1
kraj

B=0; % inicijalizacija varijable
cnt=1; % inicijalizacija brojača
dok ~feof(fid) % petlja do kraja 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, tada
B(cnt)=V; % čine vektor reda od vrijednosti V
cnt=cnt+1; % povećati brojač za 1
kraj
kraj
disp(B); % rezultata prikaza na ekranu
fclose (fid); % zatvori datoteku

Ovaj program dinamički generira vektor retka 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 takav se postupak troši dosta računalnog vremena, a program počinje raditi osjetno sporije nego da je dimenzija vektora B od samog početka određena na 5 elemenata, na primjer kako slijedi

Također treba napomenuti da je funkcija fread() napisana s dva izlazna parametra V i N. Prvi parametar sadrži vrijednost pročitanog elementa, a drugi broj pročitanih elemenata. U ovaj slučaj vrijednost N bit će 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 omogućuje vam da ispravno oblikujete vektor vrijednosti B.

Također možete pohraniti podatke niza pomoću funkcija fwrite() i fread(). Na primjer, s obzirom na niz

str = "Pozdrav MatLab";

fwrite(fid, str, "int16");

Ovdje se koristi tip int16, jer kada se radi s ruskim slovima, MatLab sustav koristi dvobajtni prikaz svakog znaka. Sljedeći je program za pisanje i čitanje podataka niza pomoću funkcija fwrite() i fread():

fid = fopen("moja_datoteka.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("moja_datoteka.dat", "rb");
ako je fid == -1
error("Datoteka nije otvorena");
kraj

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

Rezultat pokretanja programa izgledat će ovako

Lekcija broj 19.

Rad s datotekama

    Otvaranje i zatvaranje datoteka

    Operacije nad binarnim datotekama

    Operacije na formatiranim datotekama

    Pozicioniranje datoteke

    Specijalizirane datoteke

Datoteke su prilično česti objekti u MATLAB sustavu. O nekim vrstama datoteka već je bilo riječi u prethodnim poglavljima. Ova lekcija bavi se svojstvima datoteka koje ne ovise o njihovoj vrsti i primjenjuju se na bilo koje datoteke.

Otvaranje i zatvaranje datoteka

Datoteka obično je neka zbirka podataka objedinjena jednim imenom. Vrsta datoteke obično je određena njezinom ekstenzijom. Datoteku smatramo cjelinom, 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 otvorena, i na kraju upotrebe - zatvoreno. Mnoge datoteke mogu se otvoriti i čitati u isto vrijeme. Razmotrite naredbe za otvaranje i zatvaranje datoteka.

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

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

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

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

      M - otvara m-datoteku u editoru-debuggeru;

      Mdl - otvara model u Simulink-u;

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

      Html - otvara se HTML dokument u pregledniku pomoći.

Ako datoteke s ekstenzijom postoje na putu MATLAB-a, tada se datoteka vraća naredbom čiji se naziv otvara, ako ne, onda datoteka iz sustav datoteka. Ako datoteka nema ekstenziju naziva, tada je otvara program čiji format datoteke bi otkrila 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. Iznimke su varijable radnog prostora na kojima se poziva openvar i slike na kojima se poziva openim. nova proširenja na popisu. Zatvorite datoteke otvorene sa pomoć otvoriti, potrebno od uredništva koje zove orenxxx.

    Uigetfile(FILTERSPEC.Title). Otvara dijaloški okvir pod nazivom Naslov s filtrom FILTERSPEC (na primjer, polje ćelija koje sadrži ekstenzije datoteke) i vraća datoteku koju je odabrao korisnik i njezin put. Vraća FILENAME=0 ako datoteka ne postoji ili ako je korisnik kliknuo Odustani. = 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 dijaloški okvir koji vodi korisnik. Parametri su slični onima u funkciji uigetfile.

    Naredba ui open otvara dijaloški okvir, a ako je korisnik odabrao datoteku s poznato proširenje, poziva ga korištenjem open, ili ako naziv datoteke ima nepoznato proširenje, tada se poziva uigetfile. uiopen ulazni argumenti mogu biti mat lab, load, figure, simulink, editor. Bez ulaznih argumenata ili s 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). Uz opterećenje argumenta - *.mat. S argumentom figure, *.fig; simul ink - *.mdl, editor - *.m, *.mdt *.cdr, *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb.

Primjer:

uiootvorena figura.

    Naredba uiload otvara datoteku u korisničkom dijalogu pomoću naredbe load.

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

    Ui uvoz (FILENAME) - Pokreće čarobnjak za uvoz otvaranjem datoteke FILENAME. Čarobnjak za uvoz prikazuje podatke za pregled. Podaci i njihov prikaz 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 znak tabulatora, razmak, zarez ili točku-zarez. Morate kliknuti na gumb Sljedeće i u sljedećem prozoru potvrditi izbor separatora koji je napravio čarobnjak ili odabrati Ostalo i upisati bilo koji razdjelnik.

    ui import ("-f i le") - prvo prikazuje dijaloški okvir 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 opisana je u lekciji 2) s dijaloškim okvirom Windows.

    Funkcija saveas sprema crtež ili Simulink model u željenom formatu na medij za pohranu ili na uređaj s omogućenom ispisom.

    funkcija saveas(H, "FILENAME") - sprema podatke prema naredbi grafika deskriptora H u FILENAME. Format datoteke određen je ekstenzijom naziva FILENAME.

    Funkcija saveas (H. "FILENAME" . "FORMAT") radi isto, ali s parametrom FORMAT (format je naveden 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")

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

    Izbriši naziv datoteke briše datoteku trenutnu mapu. Može se koristiti *. Poželjno koristiti s unosom u obliku funkcije delete("mw of file") kada je naziv datoteke niz.

    delete(H) briše grafički objekt s ručkom H. Ako je ovaj objekt prozor, tada je prethodno zatvoren.

    Funkcija close(H) zatvara samo grafičke prozore. Za zatvaranje datoteka morate koristiti naredbu f close.

Za pisanje datoteka na disk, naredba spremanja koristi se u prilično očitom obliku:

uštedjeti

spremi naziv datoteke spremi naziv datoteke varl var2 ... spremi ... opcija save(" naziv datoteke" , ...)

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

opterećenje

load filename load filename X Y Z

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

U tim se naredbama naziv datoteke navodi prema pravilima usvojenim u operativnim sustavima klase MS-DOS. Ove naredbe obično se dupliciraju gumbima na alatnoj traci i pregledniku datoteka.

Operacije nad binarnim datotekama

Binarni ili binarni, datoteke imena čiji su podaci strojni kodovi. Glavne operacije s takvim kodovima navedene su u nastavku.

    fopen(ime datoteke, dopuštenje) - otvara datoteku s imenom filename i parametrom definiranim u dopuštenju, te vraća fid s vrijednošću: 0 - čita se s tipkovnice (dozvoljenje je postavljeno na "r"); 1 - izlaz na zaslon (dopuštenje je postavljeno na "a"); 2 - izlaz poruke o pogrešci (dopuštenje je postavljeno na "a"); -1 - neuspjeh otvaranja datoteke s izlazom poruka o vrsti greške. Fid identifikator se često koristi kao argument od strane drugih funkcija i I/O programa. Naziv datoteke naziv datoteke može sadržavati put 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 imati jednu od sljedećih osnovnih vrijednosti (za ostale, pogledajte sustav pomoći):

    "r" - otvorena datoteka za čitanje (prema zadanim postavkama);

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

    "w" - izbrisati sadržaj postojeće datoteke ili stvoriti novu i otvoriti je za pisanje;

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

Dodavanje "b" u ovaj redak (zadano) govori sustavu da otvori datoteku u binarnom načinu.

Dodavanje "t" umjesto b u ovaj redak, na primjer "rt", na operativnim sustavima koji razlikuju tekstualne i binarne datoteke, upućuje sustav da otvori datoteku u tekstualni način. Na primjer, u svim verzijama MATLAB-a za Windows/MS-DOS i VMS, ne možete otvoriti tekstualnu datoteku bez parametra "rt". Unos datoteka pomoću fopen u tekstualnom modu uklanja sve povratne oznake prije znaka nova linija.

    Fopentfilename.permission,format) - Otvara datoteku kako je gore opisano, vraćajući ID datoteke i poruku. Osim toga, vrijednost parametra formata omogućuje vam precizno definiranje format broja. Postoji 8 mogućih formata, čiji opis možete pronaći u sustavu pomoći. Konkretno, niz formata može biti "native" (format računala na kojem je sustav instaliran), "vax", "cry" (VAX i Cray računala) itd.

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

    fids = fopen C all") - vraća vektor retka 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 puni naziv datoteke, .permission string i formatni niz. Nevažeće vrijednosti fid-a 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 s 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 navedenu datoteku 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 stupca;

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

Punjenje se događa u stupcima. Ako u datoteci ima malo elemenata, tada je matrica napunjena nulama. Ako čitanje dođe do kraja datoteke bez ispunjavanja matrice potrebne veličine, tada je matrica napunjena nulama. Ako dođe do pogreške, čitanje se zaustavlja na posljednjoj očitanoj vrijednosti. Parametar preciznosti je niz koji specificira numeričku preciznost čitanja vrijednosti, kontrolira broj čitanih bitova za svaku vrijednost i tumači te bitove kao cijeli broj, broj s pomičnim zarezom ili znak

    Fread(fid,size.precision,skip) - Uključuje proizvoljan argument za preskakanje koji određuje broj bajtova za preskakanje nakon svakog čitanja. Ovo može biti korisno kod izdvajanja nesusjednih podataka iz zapisa fiksne duljine. Ako je preciznost u formatu bita, kao što je "bitN 1 ili "ubitN", vrijednost preskakanja određena je ~ komadići. Opsežan popis moguće vrijednosti parametar preciznosti može se naći u MATLAB sustavu 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 stupcima, broj izlaznih argumenata 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 proizvoljni argument za preskakanje koji specificira broj bajtova za preskakanje prije svakog upisivanja. Ovo je korisno kod umetanja podataka u nesusjedna područja u zapisima fiksne duljine. Ako je preciznost u formatu bita, kao što je "bitN" ili "ubitN", vrijednost preskakanja navedena je u bitovima.

primjeri:

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

fid=

» A = magija (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)

Broji =

» 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

broji =

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.

    Line = fgetl(fid) - vraća niz iz datoteka s identifikatorom fid s uklonjenim znakom na kraju retka. Ako funkcija fgetl otkrije kraj datoteke, vraća -1 (pogledajte funkciju fopen za više informacija). Detaljan opis dio jedra);

    Linija = f dobiva (fid) - vraća redak iz datoteke s id fid bez uklanjanja terminatora reda. Ako funkcija fgets otkrije kraj datoteke, vraća -1;

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

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

Ako izostavite identifikator fid s popisa argumenata funkcije fprintf, tada će se izlaz ispisati na zaslon, baš kao i kada se koristi standardni izlaz (fid=l).

    fprintf(format,A....) - pisati u standardni uređaj- zaslon (ali ne u datoteku). Niz formata definira brojčani sustav, poravnanje, značajne brojke, širina polja i drugi atributi izlaznog formata. Može sadržavati obična slova abecede zajedno sa specifikacijama, oznakama poravnanja itd.

Tablica 19.1. Posebni znakovi u nizovima formata

Simbol

Opis

\n

Nova linija

\t

Horizontalna kartica

\b

Vrati jedan znak

\r

Povrat prtljage

\f

Nova stranica

\\

Obrnuta kosa crta

\" ili "

jednostruki navod

%%

postotak

Funkcija fprintf ponaša se kao ekvivalentna ANSI C funkcija fprintf, s nekim iznimkama i proširenjima. U tablici. 19.1 su opisani Posebni simboli nađeno u format string. Za izlaz brojčanih ili znakovnih podataka u nizu formata morate koristiti specifikacije navedene u tablici. 19.2.

Tablica 19.2. Specifikatori formata izlaznih podataka

specificator

Opis

%d Decimalni sustav simboli (potpisani)
*iz Jedan znak

%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

Zapis fiksne točke

%g

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

%G

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

%oko

Oktalni zapis (bez predznaka)

%s

Niz znakova

%u

Decimalni zapis (bez predznaka)

%x


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

%X

Heksadecimalni zapis pomoću velikih znakova ("A"..."F")

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

Tablica 19.3. Opcije specificatora formata

Simbol

Opis

Primjer

Znak minus" (-)

Poravnajte pretvorene argumente ulijevo

%-5,2d

znak plus (+)

Uvijek ispišite znak broja (+ ili -)

%+5,2d

nula (0)

Ispuna s nulama umjesto razmacima

%05,2d

Brojevi

Određuje minimalni broj znakova za ispis

%6f

Brojevi (nakon točke)

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

%6.2f

    A = fscanf(fid, format) - čita sve podatke iz datoteke s identifikatorom, fid, pretvara ih prema vrijednosti parametra formata i vraća je kao matricu A. Vrijednost fid je cijeli broj koji vraća funkcija fopen . 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 s parametrom formata i vraća je zajedno s brojem uspješno pročitanih elemenata brojača. Parametar veličine proizvoljan je 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 stupca koji sadrži isti broj elemenata kao u datoteci;

      Čita onoliko elemenata koliko je potrebno za popunjavanje matrice veličine thp. Punjenje se događa u stupcima. Vrijednost n (ali ne!) može uzeti vrijednost Inf.

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

Tablica 19.4. Format znakova koje koristi fscanf

Simbol

Opis

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

%d

Decimalni broj

%e, %f, %g

broj s pomičnim zarezom

%i

Predpisani cijeli broj

%o

Predpisani oktalni broj

%s

Niz znakova bez razmaka

%u

Predpisani decimalni cijeli broj

%x

Heksadecimalni cijeli broj s predznakom

[...]

Slijed znakova

Između karaktera % i znak formata, dopušteno 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 predstavlja veličinu rezultirajućeg objekta: h za kratki cijeli broj (na primjer, %n d), 1 za dugi 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 datoteke

Prilikom čitanja i pisanja datoteka, one se konvencionalno predstavljaju kao linearno raspoređeni podaci, slično snimanju na kontinuiranu magnetsku vrpcu. Položaj s kojeg se trenutno čita (ili pozicija s koje se snimanje u tijeku), određuje se posebnim pokazivač. Datoteke sekvencijalnog pristupa gledaju se striktno od početka do kraja, au datotekama s slučajnim pristupom, pokazivač se može postaviti bilo gdje s kojeg se pišu ili čitaju podaci datoteke.

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

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

    Poruka = ​​ferror(fid) - Vraća pojedinosti o pogrešci kao niz poruke. Argument fid je identifikator otvorena datoteka(pogledajte funkciju fopen za detaljan opis);

    Poruka = ​​f error (f id,"clear") - briše indikator pogreške za danu datoteku;

    Ferror(.) - vraća broj greške errnum posljednja operacija I/O za danu datoteku.

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 je došlo do greške tijekom posljednje I/O operacije. Parametar poruke sadrži niz koji sadrži informacije o prirodi pogreške koja se dogodila.

Primjer:

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

fid=

» t= fread(3,)

Prazna matrica: 4 po 0

» feror (3)

ans=

Je li datoteka otvorena za čitanje? . . .

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

    Status - fseekCfid,offset,origin) - postavlja pokazivač u datoteci s identifikatorom fid na navedenu poziciju - po bajtu, određeno 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 položaj pokazivača na pomak bajtova prema kraju datoteke;

      offset=0 - ne mijenja položaj pokazivača;

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

    Porijeklo je argument koji uzima sljedeće vrijednosti:

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

      "cof" ili 0 - trenutni položaj 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 pogreške, upotrijebite funkciju ferror za više informacija;

    position=ftel I (fid) - vraća poziciju pokazivača datoteke za datoteku s fid id-om dobivenim pomoću fopen funkcije. Izlazni argument položaja je nenegativan cijeli broj koji specificira položaj pokazivača u bajtovima u odnosu na početak datoteke. Ako je zahtjev bio neuspješan, pozicija zauzima vrijednost -1. Koristite funkciju ferror za prikaz prirode pogreške.

primjeri:

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

fid=

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

Broji = 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 koji je specificiran parametrom formata, te od njih kreira string varijablu s;

    SprintfCformat,A....) - slično prethodno opisanoj funkciji, ali dodatno vraća niz pogreške errmsg ako je došlo do pogreške ili prazan niz u suprotnom. Niz formata definira brojčani sustav, poravnanje, značajne znamenke, širinu polja i druge atribute izlaznog formata. Može sadržavati regularne znakove, kao i specifikacije, znakove za proširenje itd. Funkcija fprintf ponaša se kao ekvivalentna ANSI C funkcija fprintf 0, s nekim iznimkama i proširenjima.

primjeri:

» sprintfC"*0,5g".(l+sqrt(7))/4)

ans =

0.91144

»sprintfc "%s","Hej")

ans =

Hej

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

    A = sscanf (s, format) - čita podatke iz znakovne varijable s, pretvara ih prema vrijednosti formata i na temelju tih podataka kreira matricu A. Parametar formata određuje format podataka koji se čitaju;

    A = sscanf(s, format, size) - čita količinu podataka specificiranu parametrom veličine i pretvara je u skladu s 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 stupca;

      inf - pročitati elemente do kraja znakovne varijable i staviti ih u vektor stupca koji sadrži isti broj elemenata kao u nizu varijable;

      Čita onoliko elemenata koliko je potrebno za popunjavanje matrice veličine thp. Punjenje se događa u stupcima. Vrijednost n (ali ne!) može uzeti vrijednost Inf.

    Sscanf(...) - čita podatke iz znakovne 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 niz pogreške ako je došlo do pogreške i prazan niz u suprotnom; nextindex je izlazni argument koji sadrži broj jedan veći od broja znakova u s.

Niz formata sastoji se od normalnih znakova i specifikacija. Specifikatori određuju tip podataka i uključuju znak %, opcija širine polja i format znakova. Objašnjenja se mogu pronać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 =

Specijalizirane datoteke

Funkcije u nastavku su za neke specijalizirane datoteke:

    M = dlmread(ime datoteke, graničnik) Čita podatke iz naziva datoteke s 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 s ASCII graničnikom, koristeći graničnik, u niz M, počevši od pomaka r (po redcima) i c (po stupcima). Parametri r i c temelje se 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 raspon ASCII razgraničenih podataka. Da biste koristili raspon ćelija, trebate definirati parametar raspona kao raspon = [TopRow. Lijevi stupac. BottomRow, Right Column].

Argumenti funkcije dlmread su sljedeći:

    Razdjelnik - znak koji odvaja pojedinačne elemente matrice u ASCII proračunskoj tablici;

    (,) - zadani separator;

    R, c - ćelija proračunske tablice iz koje se uzimaju elementi matrice koji odgovaraju elementima u gornjem lijevom kutu tablice;

    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 proračunske tablice naziva datoteke, koristeći graničnik za odvajanje elemenata matrice. Koristite "U" za stvaranje datoteke sa stavkama razdvojenim tabulatorima. Svi elementi s vrijednošću 0 su izostavljeni. Na primjer, polje će se pojaviti u datoteci kao "1., 2" (ako je graničnik zarez):

    dlmwrite(ime datoteke,A,delimiter, r,c) - Zapisuje matricu A u naziv datoteke, počevši od ćelije specificirane s 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 niz koji specificira naziv grafičke datoteke, fmt je niz koji specificira format datoteke. Datoteka mora biti u trenutnom direktoriju ili u direktoriju navedenom u MATLAB putu. Ako imflinfo ne može pronaći datoteku pod nazivom filename, traži datoteku pod nazivom filename.fmt.

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

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

Ako je naziv datoteke TIFF ili HDF datoteka koja sadrži više od jedne slike, tada je 1 nf o niz struktura s 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 je uvijek isto. U tablici. 19.6 navodi ova polja i opisuje njihova značenja.

Tablica 19.6. Polja informacijske strukture i njihova značenja

Polje Značenje
naziv datoteke Niz koji sadrži naziv datoteke; ako datoteka nije u trenutnom direktoriju, redak sadrži puni put do datoteke
FileModDate Niz koji sadrži datum zadnje izmjene datoteke
Veličina datoteke 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
FormatVerzija Niz ili broj koji opisuje verziju formata
Širina Cijeli broj koji određuje š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 vrstu 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 datoteke: 481078

Format: "bmp"

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

ili prave boje (RGB) slike klase uint8, naredba imwrite zapisuje stvarne vrijednosti niza u datoteku. Ako je A klase double, naredba imwrite nadjačava vrijednosti u nizu prije pisanja, koristeći pretvorbu 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 korištene u naredbi imfinfo;

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

    imwrite(....filename) - Zapisuje sliku u naziv datoteke u formatu određenom ekstenzijom datoteke. Proširenje može biti jedna od dopuštenih 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) proračunsku tablicu u matricu M;

    M = wklread(ime datoteke.r.c) - čita podatke počevši od ćelije definirane s (r,c). Parametri r i c temelje se 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, pri čemu raspon može biti predstavljen u jednom od sljedećih oblika:

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

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

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

    wklwrite(ime datoteke.M) - upisuje vrijednosti matrice M u naziv datoteke proračunske tablice Lotus 123 WK1;

    wklwrite(ime datoteke,M,r,c) Zapisuje podatke počevši od ćelije specificirane s (r,c). Parametri r i c temelje se na nuli, tako da r=0, c=0 definiraju prvu ćeliju u proračunskoj tablici.

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

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

Tablica 19.7. Formati datoteka i njihov kratak opis

Format Mogućnosti
BMP 1-bitne, 4-bitne, 8-bitne i 24-bitne nekomprimirane slike; 4-bitne i 8-bitne slike s RLE kompresijom
HDF 8-bitne bitmape, sa ili bez palete boja; 24-bitne bitmape
JPEG Bilo koje JPEG slike; JPEG slike s nekim često korištenim 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 s CCITT kompresijom
XWD 1-bitne i 8-bitne Zpixmape; XYBitmaps; 1-bitne XYPixmape

Tablica 19.8. Opcije koje se koriste pri pisanju grafičkih datoteka

Parametar Značenje Zadana vrijednost
Opcije za HDF datoteke
"kompresija" Jedna od sljedećih vrijednosti: "none", Vie, "jpeg" "rle"
"kvaliteta" Broj između 0 i 100; parametar je podržan za "Compression"="jpeg"; što je veći broj, to je veća kvaliteta datoteke (manje izobličenja datoteke tijekom kompresije) i veća je njezina veličina 75
"Način pisanja" Jedna od sljedećih vrijednosti: "overwrite", "append" "prepisati"
Opcije za JPEG datoteke
"kvaliteta" Broj između 0 i 100; što je broj veći, to je veća kvaliteta datoteke (manje izobličenja pri komprimiranju datoteke) i veća je njezina 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 Prazna linija
"rezolucija" Skalarna vrijednost za razlučivost u x i y smjerovima
72

Što smo novo naučili?

U ovoj lekciji naučili smo:

    Otvaranje i zatvaranje datoteka.

    Izvođenje operacija na binarnim i formatiranim datotekama.

    Izvršite pozicioniranje datoteke.

    Primijenite prilagođene datoteke.

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

Sustav pretraživanja

Unesite ekstenziju datoteke

Pomozite

potaknuti

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

Što učiniti ako je aplikacija s popisa već instalirana?

Često bi se instalirana aplikacija trebala automatski povezati s MATLAB datotekom. Ako se to ne dogodi, MATLAB datoteka se može uspješno povezati ručno s novoinstaliranom aplikacijom. Dovoljno je desnom tipkom miša kliknuti na MATLAB datoteku, a zatim među dostupnima odabrati opciju "Odaberi zadani program". Zatim trebate odabrati opciju "Pregledaj" i pronaći svoju omiljenu aplikaciju. Unesene promjene moraju biti odobrene opcijom "OK".

Programi koji otvaraju MATLAB datoteku

Windows

Zašto ne mogu otvoriti MATLAB datoteku?

Problemi s MATLAB datotekama mogu imati i druge razloge. Ponekad čak ni instaliranje softvera koji podržava MATLAB datoteke na vaše računalo neće riješiti problem. Razlog nemogućnosti otvaranja, kao i rada s MATLAB datotekom, također može biti:

Nedosljedne veze MATLAB datoteka u unosima registra
- oštećenje MATLAB datoteke koju otvaramo
- infekcija MATLAB datoteka (virusi)
- premali računalni resurs
- zastarjeli upravljački programi
- uklanjanje MATLAB ekstenzije iz registra sustava Windows
- nepotpuna instalacija programa koji podržava MATLAB ekstenziju

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

Moje računalo ne prikazuje ekstenzije datoteka, što da radim?

U standardnim postavkama sustava Windows, korisnik računala ne vidi ekstenzije MATLAB datoteka. To se može uspješno promijeniti u postavkama. Samo idite na "Upravljačka ploča" i odaberite "Prikaz i personalizacija". Zatim morate ući u "Opcije mape" i otvoriti "Prikaz". Na kartici "Prikaz" nalazi se opcija "Sakrij ekstenzije poznatih vrsta datoteka" - morate odabrati ovu opciju i potvrditi operaciju pritiskom na gumb "U redu". U ovom trenutku, sve ekstenzije datoteka, uključujući MATLAB, trebale bi se pojaviti poredane po imenu datoteke.

). Među alatima opće namjene koji se koriste u kemometriji posebno mjesto zauzima MatLab paket. 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 praktičnim alatom za izvođenje matričnih izračuna. Raspon problema koji se mogu proučavati pomoću MatLaba uključuje: matričnu analizu, obradu signala i slike, neuronske mreže i mnoge druge. MatLab je jezik otvorenog koda visoke razine koji naprednim korisnicima omogućuje razumijevanje programiranih algoritama. Jednostavan ugrađeni programski jezik olakšava stvaranje vlastitih algoritama. Za dugi niz godina korištenja MatLaba stvoren je ogroman broj funkcija i ToolBox-ova (paketa specijaliziranih alata). Najpopularniji je PLS ToolBox tvrtke Eigenvector Research, Inc.

1. Osnovne informacije

1.1. MatLab radno okruženje

Dvaput kliknite na ikonu za pokretanje programa. 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čnije sučelje za pristup mnogim pomoćnim elementima

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

    alatna traka s gumbima i padajućim popisom;

    prozor s karticama Launch Pada i Radni prostor, iz kojeg možete pristupiti raznim modulima ToolBoxa i sadržaju radnog stola;

    prozor s karticama povijest zapovijedanja I trenutni imenik, namijenjen za pregled i pozivanje prethodno unesenih naredbi, kao i za postavljanje trenutnog imenika;

    naredbeni prozor koji sadrži upit za unos » i okomiti pokazivač koji treperi;

    statusna linija.

Ako radno okruženje MatLab 6.x nema prozora prikazanih na slici, tada trebate odabrati odgovarajuće stavke u izborniku Pogled: naredbeni prozor, Povijest naredbi, Trenutni imenik, Radni prostor, Launch Pad.

Naredbe treba upisati u naredbeni prozor. Simbol » , koji označava poziv za ulazak u naredbeni redak, nije potrebno upisivati. Za pregled radnog prostora prikladno je koristiti trake za pomicanje ili tipke Početna , Kraj , za pomicanje lijevo ili desno i PageUp , PageDown za pomicanje gore ili dolje. Ako iznenada, nakon pomicanja po radnom prostoru naredbenog prozora, naredbeni redak s trepćućim pokazivačem 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. Najjednostavniji izračuni

Upišite 1+2 u naredbeni redak i pritisnite Enter. Kao rezultat, u naredbenom prozoru MatLab-a prikazuje se sljedeće:

Riža. 2 Grafički prikaz analize glavnih komponenti

Što je radio MatLab program? Prvo je izračunao zbroj 1+2, zatim je rezultat zapisao u posebnu varijablu ans i ispisao njegovu vrijednost, 3, u naredbeni prozor. Ispod odgovora nalazi se naredbeni redak s trepćućim kursorom, što pokazuje da je MatLab spreman za daljnje izračune. Možete upisati nove izraze u naredbeni redak i pronaći njihove vrijednosti. Ako želite nastaviti raditi s prethodnim izrazom, na primjer, izračunati (1+2)/4,5, tada je najlakši način koristiti već postojeći rezultat koji je pohranjen u varijablu ans. Upišite ans/4.5 (pri unosu decimala koristi se točka) i pritisnite Unesi, ispada

Riža. 3 Grafički prikaz analize glavnih komponenti

1.3. Odjek naredbe

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

Riža. Primjer unosa funkcije 4 ScoresPCA

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

Najlakši način za spremanje svih vrijednosti varijabli je korištenje stavke Spremi radni prostor kao na izborniku Datoteka. Pojavljuje se dijaloški okvir Spremi Workspase Variables u kojem se traži da navedete direktorij i naziv datoteke. Prema zadanim postavkama, predlaže se spremanje datoteke u radni poddirektorij glavnog MatLab direktorija. Program će rezultate rada spremiti u datoteku s nastavkom mat. Sada možete zatvoriti MatLab. U sljedećoj sesiji, da biste vratili vrijednosti varijabli, otvorite ovu spremljenu datoteku koristeći podstavku Otvori izbornika Datoteka. Sada su sve varijable definirane u posljednjoj sesiji ponovno dostupne. Mogu se koristiti u novounesenim naredbama.

1.5. Časopis

MatLab ima mogućnost pisanja izvršnih naredbi i rezultata u tekstualnu datoteku (vodi dnevnik rada), koji se zatim može pročitati ili ispisati iz uređivača teksta. Za početak zapisivanja upotrijebite naredbu dnevnik. Kao argument naredbe dnevnik morate odrediti naziv datoteke u kojoj će se pohraniti dnevnik rada. Naredbe koje se dalje upisuju i rezultati njihovog izvršenja bit će zapisani u ovu datoteku, na primjer, niz naredbi

obavlja sljedeće radnje:

    otvara zapisnik u datoteci exampl-1.txt ;

    vrši izračune;

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

    sprema zapisnik u datoteku exampl-1.txt u radni poddirektorij MatLab korijenskog direktorija 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

Spremi rad-1
prestati

1.6. Sustav pomoći

MatLab prozor pomoći pojavljuje se nakon odabira opcije Help Window iz izbornika Help ili pritiskom na gumb za pitanje na alatnoj traci. Ista se operacija može izvesti upisivanjem naredbe helpwin. Za prikaz prozora pomoći za pojedinačne teme upišite helpwin tema. Prozor pomoći pruža vam iste informacije kao i naredba za pomoć, ali prozorsko sučelje olakšava povezivanje s drugim temama pomoći. Koristeći adresu web stranice Math Works, možete otići na poslužitelj 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. Za unos skalara dovoljno je dodijeliti njegovu vrijednost nekoj varijabli, na primjer

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

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

Prikladno je unositi male matrice izravno iz naredbenog retka. Kada se unese, matrica se može promatrati kao vektor stupca, č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 redaka i stupca, zatvorenih u zagradama, na primjer, naredba B(2,3) će vratiti element drugog retka i trećeg stupca matrice B . Za odabir stupca ili retka iz matrice upotrijebite broj stupca ili retka 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 pomoću dvotočke. Na primjer, odaberite iz matrice P blok označen bojom

Ako trebate vidjeti varijable radnog okruženja, u naredbeni redak trebate upisati naredbu čiji .

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, zapamtite da za zbrajanje ili oduzimanje matrice moraju biti iste veličine, a pri množenju broj stupaca prve matrice mora biti jednak broju redaka druge matrice. Zbrajanje i oduzimanje matrica, kao i brojeva i vektora, provodi se pomoću znakova plus i minus.

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

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

Provjerite rezultat množenjem matrice P sama po sebi.

2.4. Stvaranje matrica posebne vrste

Ispunjavanje 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 jednoliko raspoređenih između nule i jedan, i funkcija randn- matrica brojeva raspoređenih prema normalnom zakonu s nultom srednjom i jediničnom varijansom.

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

2.5. Matrični izračuni

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

Pronalaženje inverzne matrice provodi se pomoću funkcije inv za kvadratne matrice

3. Integracija MatLaba i Excela

Integracija MatLaba i Excela omogućuje korisniku Excel-a pristup brojnim MatLab funkcijama za obradu podataka, razne izračune i vizualizaciju rezultata. Dodatak excllink.xla implementira ovo poboljšanje u Excelu. Za povezivanje MatLaba i Excela definirane su posebne funkcije.

3.1. Excel konfiguracija

Prije postavljanja Excela za rad s MatLabom, trebali biste provjeriti je li Excel Link uključen u instaliranu verziju MatLaba. Poddirektorij exclink glavnog MatLab direktorija ili poddirektorija alatne kutije mora sadržavati datoteku dodatka excllink.xla. Pokrenite Excel i odaberite Dodaci s izbornika Alati. Otvorit će se dijaloški okvir s informacijama o trenutno dostupnim dodacima. Pomoću gumba Browse odredite put do datoteke excllink.xla. Na popisu dodataka u dijaloškom okviru pojavit će se niz. Excel Link 2.0 za korištenje s MatLabom s postavljenom zastavom. Kliknite U redu, potrebni dodatak je dodan u Excel.

Imajte na umu da Excel sada ima alatnu traku Excel Link koja sadrži tri gumba: putmatrix, getmatrix, evalstring. Ovi gumbi implementiraju osnovne radnje potrebne za implementaciju odnosa između Excela i MatLaba - razmjenu matričnih podataka, te izvršavanje MatLab naredbi iz Excel okruženja. Kada ponovno pokrenete Excel, dodatak excllink.xla automatski se povezuje.

Koordinirani rad Excela i MatLaba zahtijeva još nekoliko postavki koje su prema zadanim postavkama prihvaćene u Excelu (ali se mogu mijenjati). Iz izbornika Alati idite na Opcije , otvara se dijaloški okvir Mogućnosti. 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 Uredi mora se postaviti zastavica Premjesti odabir nakon Enter.

3.2. Razmjena podataka između MatLaba i Excela

Pokrenite Excel, provjerite jesu li sve potrebne postavke napravljene kao što je opisano u prethodnom odjeljku (MatLab mora biti zatvoren). Unesite matricu u ćelije A1 do C3, upotrijebite točku za odvajanje decimala kako to zahtijeva Excel.

Odaberite podatke ćelije u listu i pritisnite gumb putmatrix, pojavit će se Excel prozor s upozorenjem da MatLab ne radi. Kliknite OK , pričekajte da se MatLab otvori.

Pojavljuje se dijaloški okvir programa Excel s redkom za unos za određivanje naziva 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 naredbeni prozor i uvjerite se da je varijabla M kreirana u radnom okruženju, koja sadrži niz tri po tri:

Napravite neke operacije u MatLabu s matricom M, na primjer, invertirajte je.

Poziv inv za invertiranje matrice, kao i svaka druga MatLab naredba, može se izvesti izravno iz Excela. Pritiskom na gumb evalstring koji se nalazi na panelu Excel Link pojavljuje se dijaloški okvir u čiji unos treba upisati naredbu MatLab

IM=inv(M) .

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

Vratite se u Excel, učinite ćeliju A5 trenutnom ćelijom i kliknite gumb getmatrix. Pojavljuje se dijaloški okvir s redkom za unos u koji trebate unijeti 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, trebate odabrati odgovarajuće ćelije Excel lista, a za uvoz trebate samo odrediti jednu ćeliju, koja će biti gornji lijevi element uvezenog niza. Preostali elementi bit će upisani u ćelije lista u skladu s veličinom niza, prebrišući podatke koji se u njima nalaze, stoga trebate biti oprezni pri uvozu nizova.

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 pomoću gumba na alatnoj traci programa Excel Link. Informacije se mogu prikazati u obliku matrice, t.j. pravokutna površina radnog lista. Stanice raspoređene u retku ili stupcu izvoze se u vektore retka i vektore stupaca u MatLabu, respektivno. Slično se događa i uvoz vektora retka i vektora stupaca u Excel.

4. Programiranje

4.1. M-datoteke

Rad iz MatLab naredbenog retka je težak ako trebate unijeti puno naredbi i često ih mijenjati. Vođenje dnevnika s naredbom dnevnik a održavanje radnog okruženja malo olakšavaju posao. Najprikladniji način za izvršavanje grupa MatLab naredbi je korištenje M-datoteka, u koje možete upisivati ​​naredbe, izvršavati ih sve odjednom ili u dijelovima, spremati ih u datoteku i koristiti ih kasnije. Uređivač M-datoteka dizajniran je za rad s M-datotekama. Pomoću njega možete stvoriti vlastite funkcije i pozvati ih, uključujući i iz naredbenog prozora.

Proširite izbornik Datoteka glavnog MatLab prozora i u Novoj stavci odaberite podstavku M-datoteka . Nova datoteka se otvara u prozoru uređivača M-datoteka prikazanom na slici.

U MatLabu postoje dvije vrste M-datoteka: programska datoteka ( M-datoteke skripte) koji sadrži niz naredbi i funkcijsku datoteku, ( Funkcija M-datoteka) koji opisuju korisnički definirane funkcije.

4.2. Program za datoteke

Upišite naredbe u uređivaču koje dovode do izgradnje dva grafikona u jednom grafičkom prozoru

Spremite datoteku sada pod imenom mydemo.m u radni poddirektorij glavnog MatLab direktorija odabirom stavke Spremi kao iz izbornika Datoteka urednika. Da biste pokrenuli sve naredbe sadržane u datoteci, odaberite stavku Pokreni s izbornika Debug. Na ekranu će se pojaviti grafički prozor. Slika 1, koji sadrži grafove funkcija.

Naredbe programa datoteke izlaze u naredbeni prozor. Za suzbijanje izlaza, završite naredbe točkom-zarezom. Ako se napravi pogreška pri tipkanju i MatLab ne može prepoznati naredbu, tada se naredbe izvršavaju sve dok se ne unese pogrešno, nakon čega se u naredbenom prozoru prikazuje poruka o pogrešci.

Vrlo zgodna značajka koju nudi uređivač M-datoteka je izvršavanje dijela naredbi. Zatvorite grafički prozor Slika 1. Odaberite mišem dok držite pritisnutu lijevu tipku ili tipkama sa strelicama dok držite pritisnutu tipku Shift, prve četiri naredbe i izvršite ih iz stavke Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon, koji odgovara izvršenim naredbama. Zapamtite da za izvršenje nekih naredbi morate ih odabrati i pritisnuti tipku F9.

Pojedinačni blokovi M-datoteke mogu biti opremljeni komentarima koji se preskaču tijekom izvršavanja, ali su prikladni za rad s M-datotekom. Komentari počinju sa znakom postotka i automatski su označeni zelenom bojom, na primjer:

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

4.3. funkcija datoteke

Datotečni program razmatran iznad je samo slijed MatLab naredbi, nema ulazne i izlazne argumente. Da biste koristili numeričke metode i prilikom programiranja vlastitih aplikacija u MatLabu, morate biti u mogućnosti sastaviti datotečne funkcije koje izvode potrebne radnje s ulaznim argumentima i vraćaju rezultat akcije u izlaznim argumentima. Pogledajmo nekoliko jednostavnih primjera kako 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 upišite

Riječ funkcija u prvom retku navodi da ova datoteka sadrži funkcijsku datoteku. Prvi redak je zaglavlje funkcije, koje sadrži naziv funkcije i popis ulaznih i izlaznih argumenata. U primjeru, naziv funkcije je centriranje, jedan ulazni argument je X, a jedan izlazni argument je Xc. Nakon zaglavlja slijede komentari, a zatim tijelo funkcije (u ovom se primjeru sastoji od dva retka), gdje se izračunava njezina vrijednost. Važno je da se izračunata vrijednost zapiše u Xc. Nemojte zaboraviti uključiti točku-zarez kako biste spriječili prikaz suvišnih informacija na zaslonu. Sada spremite datoteku u svoj radni direktorij. Imajte na umu da odabirom Spremi ili Spremi kao iz izbornika Datoteka otvara se dijaloški okvir za spremanje datoteke čije polje Naziv datoteke već sadrži centriranje naziva. Nemojte ga mijenjati, spremite funkcijsku datoteku u datoteku s predloženim nazivom!

Sada se stvorena funkcija može koristiti na isti način kao i ugrađeni sin , cos i drugi. Poziv vlastitih funkcija može se izvršiti iz datotečnog programa i iz druge datotečne funkcije. Pokušajte sami napisati funkcijsku datoteku koja će skalirati matrice, t.j. podijelite svaki stupac standardnom devijacijom za taj stupac.

Moguće je napisati funkcijsku datoteku s više ulaznih argumenata, koji se nalaze u popisu odvojenom zarezima. Također možete stvoriti funkcije koje vraćaju više vrijednosti. Da biste to učinili, izlazni argumenti se dodaju, odvojeni zarezima, na popis izlaznih argumenata, a sam popis je zatvoren u uglastim zagradama. Dobar primjer je funkcija koja pretvara vrijeme dano u sekundama u sate, minute i sekunde.

Kada pozivate datotečne funkcije s više izlaznih argumenata, rezultat bi trebao biti zapisan u vektor odgovarajuće duljine.

4.4 Izrada grafa

MatLab ima brojne mogućnosti za grafički prikaz vektora i matrica, kao i za izradu komentara i ispis grafova. Opišimo nekoliko važnih grafičkih funkcija.

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

Program je izgradio graf ovisnosti koji se prikazuje u prozoru Slika 1

MatLab automatski dodjeljuje različitu boju svakom grafikonu (osim kada to čini korisnik), što omogućuje razlikovanje između skupova podataka.

Naredba drži se omogućuje dodavanje krivulja postojećem grafu. Funkcija podzaplet omogućuje prikaz više grafikona u jednom prozoru

4.5 Ispis grafikona

Stavka Ispis na izborniku Datoteka i naredba ispisati ispis MatLab grafike. Izbornik Ispis otvara dijaloški okvir koji vam omogućuje odabir uobičajenih standardnih opcija ispisa. Naredba ispisati pruža veću fleksibilnost u izlazu podataka i omogućuje vam kontrolu ispisa iz M-datoteka. Rezultat se može poslati izravno na zadani pisač ili spremiti u unaprijed definiranu datoteku.

5. Primjeri programa

Ovaj odjeljak navodi najčešće algoritme koji se koriste u analizi multivarijatnih podataka. Razmatraju se i najjednostavnije metode transformacije podataka - centriranje i skaliranje, te 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 standardnom devijacijom. U funkcijskom kodu za centriranje je data matrica. Stoga je u nastavku prikazan samo kod funkcije, koji vage podaci. Imajte na umu da izvorna 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 komprimiranja podataka u multivarijantnoj analizi je analiza glavnih komponenti (PCA). S matematičke točke gledišta, PCA je dekompozicija izvorne matrice x, tj. predstavljajući ga kao proizvod dviju matrica T I P

x = TP t+ E

Matrica T naziva se matrica rezultata (bodovi), matrica je ​​matrica reziduala.

Najjednostavniji način pronalaženja matrica T I P- koristiti SVD dekompoziciju kroz standardnu ​​MatLab funkciju pod nazivom 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 se transformira (barem - centrira; vidi) i pretvara 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čuna 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 čitatelji, au ovom priručniku autori predstavljaju vlastitu verziju. Prilikom izračuna PCA, možete unijeti broj glavnih komponenti (broj varijablePC). Ako nije poznato koliko je komponenti potrebno, u naredbeni redak treba napisati = pcanipals (X) i tada će program postaviti broj komponenti jednak najmanjoj od dimenzija izvorne matrice x.

funkcija = pcanipals(X, brojPC)

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

Ako je duljina (broj PC) > 0
pc = brojPC(1);
elseif (duljina(brojPC) == 0) & X_r< X_c
pc = X_r;
drugo
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 = mačka (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 izvodi 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 konstruirana na dosljedan način kako bi se maksimizirala korelacija između odgovarajućih vektora x-računi ta I Y-računi ua. Ako podatkovni blok Y uključuje više odgovora (tj. K>1), moguće je konstruirati dvije projekcije početnih podataka – PLS1 i PLS2. U prvom slučaju, za svaki od odgovora y k konstruira se vlastiti projekcijski podprostor. Istovremeno, računi T (U) i opterećenja P (W, P) ovisi o tome koji se odgovor koristi. Ovaj pristup se naziva PLS1. Za PLS2 metodu izgrađen je samo jedan prostor za projekciju, koji je zajednički za sve odgovore.

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

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

a oni se pretvaraju 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čuna 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.

Ovdje je kod za ovaj algoritam, preuzet 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);

% Kriterij konvergencije postavljen je vrlo visoko.
cri = 100;

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

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

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

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

% Kraj pls

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

5,5PLS2

Za PLS2, algoritam je sljedeći. Prvo originalne matrice x I Y transformiraju (barem - središte; 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čuna sljedećeg ( a th) PLS2 komponente moraju se staviti: 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 i Fa +1 = F atq t i primijeniti isti algoritam na njih, zamjenjujući indeks a na a+1.

Ovdje je šifra, koja je također posuđena iz knjige.

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

Za i=1:a
% Izračunajte zbroj 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";

% Spremite vektore u matrice.
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 vektora ss za X i Y.
SS = ;

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

%Kraj plsr

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

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

O izračunu PLS2 s dodatkom KemometrijaDodaj u opisano u priručniku Metode projekcije u Excelu.

Zaključak

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

Vrhunski povezani članci