Ö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

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

Mennyi volt a napi maximumhőmérsékletek átlaga? Ábrázoljuk a maximumhőmérséklet eloszlását hisztogrammon!