Ötödik labor: Excel-táblák importálása
Contents
Sztringek
s1='Ez egy sztring'
s1 = 'Ez egy sztring'
s2='ez egy Sztring'
s2 = 'ez egy Sztring'
s3='ez is az'
s3 = 'ez is az'
Nem működik a korábbi "=="-val összehasonlítás, mert a Matlab a sztringeket (szám)tömbként tárolja. Minden karakterhez tartozik egy ASCII-kód (kicsi egész szám), ezeket hasonlítja össze ilyenkor. Meg is lehet kérdezni:
double(s1)
ans = Columns 1 through 13 69 122 32 101 103 121 32 115 122 116 114 105 110 Column 14 103
Az ékezetes karakterekhez is tartozik kód
s4='Üvegvisszaváltó'
double(s4)
s4 = 'Üvegvisszaváltó' ans = Columns 1 through 13 220 118 101 103 118 105 115 115 122 97 118 225 108 Columns 14 through 15 116 243
Ha sztringekkel akarunk dolgozni, ahhoz külön hozzájuk írt függvények kellenek, például:
lower(s1)
ans = 'ez egy sztring'
Összehasonlítás, itt a == nem jó!
strcmp(s1,s2)
ans = logical 0
Nem veszi figyelembe a kis és nagybetűt:
strcmpi(s1,s2)
ans = logical 1
Összefűzés:
[s1 s2]
ans = 'Ez egy sztringez egy Sztring'
Konverzió:
s5='12'
a5=str2num(s5)
whos
s5 = '12' a5 = 12 Name Size Bytes Class Attributes a5 1x1 8 double ans 1x28 56 char s1 1x14 28 char s2 1x14 28 char s3 1x8 16 char s4 1x15 30 char s5 1x2 4 char
A "cell" adattípus
Olyan tömbök tárolására alkalmas, melynek elemei különböző típusúak, erre a sima tömb nem képes
adatok=cell(2,3)
adatok = 2×3 cell array {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
kapcsos zárójelet kell használni az indexeléshez
adatok{1,1}='Ide'
adatok = 2×3 cell array {'Ide' } {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
adatok{1,2}=12
adatok = 2×3 cell array {'Ide' } {[ 12]} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
adatok{1,3}=[2 4 1]
adatok = 2×3 cell array {'Ide' } {[ 12]} {1×3 double} {0×0 double} {0×0 double} {0×0 double}
Vigyázat
adatok(1,3)
ans = 1×1 cell array {1×3 double}
nem ugyan az, például az adatok(1,3)=12 error ad
adatok{1,3}
ans = 2 4 1
Importálás Excel-ből
a .xls és .xslx formátumra működik, de kell a gépen feltelepített excel hozzá, különben korlátozottan működik
[szamok, szoveg, osszes]=xlsread('adatok.xls');
például ez nem működik nélküle
szam2=xlsread('adatok.xls', 'B2:E13');
Warning: Range cannot be used in 'basic' mode. The entire sheet will be loaded.
Feladatok
1. feladat: Tekintsük a következő szöveget: A neuron or, also known as a neurone, is an electrically excitable cell that receives, processes, and transmits information through electrical and chemical signals. These signals between neurons occur via specialized connections called synapses. Neurons can connect to each other to form neural networks. Neurons are the primary components of the central nervous system, which includes the brain and spinal cord, and of the peripheral nervous system, which comprises the autonomic nervous system and the somatic nervous system.
Készítsük egy szt nevű változót, amely sztringkét tárolja ezt a szöveget. A Matlab segítségével határozzuk meg, hogy
- a szöveg hány karakterből áll
- a szöveg hány betűből áll
- hány 'a' betű található a szövegben
2.feladat: Készítsünk egy függvényt, aminek bemenete egy sztring a kimenete pedig a sztring elemeinek ascii-kódja+1 ('titkosírás'). Készítsük el a dekódoló függvényt is, amely az előbbi függvény kimenetéből visszaállítja a sztringet.
3.feladat: Írjunk egy olyan mennyiVan(s) nevű függvényt, melynek bemenete egy s sztring. A függvény kimenete legyen az á és ő karakterek számának összege s-ben.
4. feladat: Írjunk egy olyan valogat(s) nevű függvényt, amelynek bemenete egy xls fájl neve sztringként. A kimenetek legyen az első 3 oszlopban lévő számok maximuma illetve minimuma.
5. feladat: Nyissuk meg az 2015szept.xls nevű fájt, ebben időjárás adatok vannak az tavalyelőtt szeptemberről, Budapesten. A hőmérsékletadatok végén egy °C sztring van, emiatt a Matlab nem ismeri fel azokat számként. Vágjuk le ezt a végéről, majd ezután alakítsuk számmá a 2. és 3. oszlop adatait, majd az így kapott mátrix feldolgozásával állípítsuk meg, hogy
- melyik volt a leghidegebb nap,
- melyik volt az a nap, amikor a legnagyobb volt a hőmérékletingadozás?
Mennyi volt a napi maximumhőmérsékletek átlaga? Ábrázoljuk a maximumhőmérséklet eloszlását hisztogrammon!