Program na zaliczenie: Odejmowanie widm



Podobne dokumenty
1 Programowanie w matlabie - skrypty i funkcje

Podstawy MATLABA, cd.

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

PRZYKŁADOWE SKRYPTY (PROGRAMY W MATLABIE Z ROZSZERZENIEM.m): 1) OBLICZANIE WYRAŻEŃ 1:

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Ćwiczenie 4. Matlab - funkcje, wielomiany, obliczenia symboliczne

Zadania z rysowania i dopasowania funkcji

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA, cz2.

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Pętle iteracyjne i decyzyjne

INFORMATYKA POZIOM ROZSZERZONY

INFORMATYKA POZIOM ROZSZERZONY

Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi

FUNKCJA KWADRATOWA. Zad 1 Przedstaw funkcję kwadratową w postaci ogólnej. Postać ogólna funkcji kwadratowej to: y = ax + bx + c;(

CIĄGI wiadomości podstawowe

Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała

PROGRAMOWANIE W C++ ZADANIA

WHILE (wyrażenie) instrukcja;

Język C, tablice i funkcje (laboratorium, EE1-DI)

O co chodzi z tym MATLAB'em?!

Matlab Składnia + podstawy programowania

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

WHILE (wyrażenie) instrukcja;

Przetwarzanie sygnałów

PODSTAWY AUTOMATYKI. MATLAB - instrukcje i funkcje zewnętrzne. Grafika w Matlabie. Wprowadzenie do biblioteki Control System Toolbox.

Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku

Laboratorium 1. Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi

Wstęp do Programowania Lista 1

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Metody numeryczne Laboratorium 2

Opis programu Konwersja MPF Spis treści

Metody i analiza danych

Różniczkowanie numeryczne

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres rozszerzony

Całkowanie numeryczne

MATLAB Podstawowe polecenia

Matlab Składnia + podstawy programowania

MATLAB tworzenie własnych funkcji

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Rozkład materiału nauczania

Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

WIMIM/MIBM/N1/-/B04 WIMIM/ME/S1/-/C46 WIMIM/IM/S1/-/B19

Uwaga. 1. Jeśli uczeń poda tylko rozwiązania ogólne, to otrzymuje 4 punkty.

Ruch jednostajnie zmienny prostoliniowy

Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

ZESPÓŁ SZKÓŁ W OBRZYCKU

MATLAB wprowadzenie śycie jest zbyt krótkie, aby tracić czas na pisanie pętli!

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Scenariusz lekcji. 3. Temat lekcji: Zastosowanie własności trójmianu kwadratowego: rysowanie wykresu, wyznaczanie wzoru o podanych własnościach;

Próbny egzamin z matematyki dla uczniów klas II LO i III Technikum. w roku szkolnym 2012/2013

Automatyczna klasyfikacja zespołów QRS

SCENARIUSZ LEKCJI. Wielomiany komputerowe wykresy funkcji wielomianowych

Wstęp do Informatyki

4. Funkcje. Przykłady

FUNKCJA POTĘGOWA, WYKŁADNICZA I LOGARYTMICZNA

PRÓBNA NOWA MATURA z WSiP. Matematyka dla klasy 2 Poziom podstawowy. Zasady oceniania zadań

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

PLAN WYNIKOWY DLA KLASY DRUGIEJ POZIOM PODSTAWOWY I ROZSZERZONY. I. Proste na płaszczyźnie (15 godz.)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Lista zadań nr 2 z Matematyki II

Klasa 6. Liczby dodatnie i liczby ujemne

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

Język C, tablice i funkcje (laboratorium)

2) R stosuje w obliczeniach wzór na logarytm potęgi oraz wzór na zamianę podstawy logarytmu.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Metody systemowe i decyzyjne w informatyce

do instrukcja while (wyrażenie);

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY DRUGIEJ

2. Układy równań liniowych

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Próbny egzamin maturalny z matematyki Poziom rozszerzony

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

LUBELSKA PRÓBA PRZED MATURĄ 2018 poziom podstawowy

Laboratorium Cel ćwiczenia Ćwiczenie ma na celu praktyczne przedstawienie grafiki 3D.

Rozdział 1 PROGRAMOWANIE LINIOWE

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

LISTA 5. C++ PETLE for, while, do while

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Programowanie w języku Python. Grażyna Koba

Utworzenie funkcji użytkownika w Visual Basic

UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne

Lista 2 logika i zbiory. Zad 1. Dane są zbiory A i B. Sprawdź, czy zachodzi któraś z relacji:. Wyznacz.

Warsztaty dla nauczycieli

Przykładowy zestaw zadań nr 1 z matematyki Odpowiedzi i schemat punktowania poziom podstawowy ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 1

Transkrypt:

Piotr Chojnacki: MATLAB Program na zaliczenie: Odejmowanie widm {Poniższy program ma za zadanie odjęcie dwóch widm od siebie. Do poprawnego działania programu potrzebne są trzy funkcje: odejmowaniewidm.m współczynnik.m numer.m. Poniżej podane są kody źródłowe tych funkcji. W folderze skompresowanym znajdują się 4 przykładowe widma na których można przećwiczyć program. Również poniżej przedstawiam wyniki działania.} {została zachowana oryginalna kolorystyka składni MATLABa} function [k]=odejmowaniewidm(x,y); % Piotr Chojnacki % III rok informatyka chemiczna % Wrocław dn. 22 maja 2005 % zadaniem funkcji jest odjęcie dwóch widm od siebie % funkcję wywołuje się w sposób następujący: odejmowaniewidm(x,y) % gdzie 'x'- oznacza widmo pierwsze 'y' - widmo drugie % widma wczytuje się poprzez podanie samej nazwy bez rozszerzenia % natomiast k jest parametrem zwracanym przez funkcję i jest to obliczony % współczynnik o który odjęte są widma z równania: w1-k*w2 % przykłady wywołań odejmowaniewidm('oct2rs20','oct2rs85'); % odejmowaniewidm('nbut20','nbut80'); % przykład wywołania funkcji dla widm stężeniowych % odejmowaniewidm('stez01','stez02'); global z intensx intensy n m widmox widmoy % deklaracja zmiennych globalnych wykorzystywanych w drugiej funkcji Piotr Chojnacki 1

disp(['------------------------------------------ ']); disp('funkcja odejmie teraz dwa widma od siebie.']); disp(['------------------------------------------ ']); hold on % włączenie rysowania wszystkich widm na jednym wykresie eval(['load ' x '.PRN']); % wczytanie pierwszego widma dane=eval(x); % i dodanie rozszerzenia.prn liczfalx=dane(:,1); intensx=dane(:,2); widmox=[dane(:,1) dane(:,2)]; plot(liczfalx,intensx,'b'); % rysowanie I widma w kolorze niebieskim title('widma'); % tytuł wykresu xlabel('czestosc (liczby falowe)'); % nazwa osi x ylabel('absorbancja (intensywnosc)'); % nazwa osi y grid on % włączenie siatki na wykresie eval(['load ' y '.PRN']); % wczytanie drugiego widma dane1=eval(y); % i dodanie rozszerzenia.prn liczfaly=dane1(:,1); intensy=dane1(:,2); widmoy=[dane1(:,1) dane1(:,2)]; plot(liczfaly,intensy,'g'); % rysowanie II widma w kolorze zielonym legend('widmo I','widmo II'); % legenda disp(['zostało narysowane pierwsze i drugie widmo ']); % -------------------------------------------------------------------------- % OFFSET % wynonywanie offsetu czyli odejmowanie od widma wybranej % intensywności dla danej liczby falowej % po odjęciu wartości intensywności przy danej liczbie falowej otrzymujemy % dokładniejszą wartośc współczynnika k % -------------------------------------------------------------------------- lf=input('podaj liczbę falową do przeprowadzenia offsetu: '); po=numer(widmoy(:,1),lf); % odjęcie wartości intensywności przy danej % liczbiefalowej od widma pierwszego Piotr Chojnacki 2

intensy=intensy-intensy(po); po=numer(widmox(:,1),lf); % odjęcie wartości intensywności przy danej liczbie % falowej od widma drugiego intensx=intensx-intensx(po); % ------------------------------------------------------------------------- % od tego momentu wartości intensx i intensy sa podstawione wartosciami po % odjeciu intensywności przy danej liczbie falowej % ------------------------------------------------------------------------- figure hold on grid on % nowe widma po offset rysowane są w nowym oknie % dopisywanie do tego samego okna nowych wykresów % włączenie siatki na wykresie plot(liczfalx,intensx,'b'); % rysowanie I widma w kolorze niebieskim title('widma po offset'); % tytuł wykresu xlabel('czestosc (liczby falowe)'); % nazwa osi x ylabel('absorbancja (intensywnosc)'); % nazwa osi y plot(liczfaly,intensy,'g'); % rysowanie II widma w kolorze zielonym legend('widmo I - po offset','widmo II - po offset'); % legenda disp(['zostało narysowane pierwsze i drugie widmo po dokonaniu offsetu ']); % przedział liczenia współczynnika k disp(['wybierz przedział dla którego zostanie policzony współczynnik']); disp(['o który zostaną odjęte widma według równania w1-k*w2 ']); % zerowanie zmiennych oznaczających granicę % przedziału szukania współczynnika k n=0; m=0; n=input('poczatek przedziału: '); % wczytanie początku przedziału m=input('koniec przedziału: '); % wczytanie końca przedziału k=1; % początkowa wartość wspołczynnika k wspol=fminsearch('wspolczynnik',k); % wywołanie funkcji liczącej wspołczynnik k Piotr Chojnacki 3

k=abs(wspol) % zapisywanie wyniku funkcji wspolczynnik pod zmienną k w % module tak żeby był zawsze liczbą dodatnią odjete= [widmox(:,1) (intensx-k*intensy)]; % macierz złożona z dwóch kolumn: liczby falowe i intensywność po odjęciu plot(widmox(:,1),odjete(:,2),'r'); % rysowanie odjętego widma w kolorze czerwonym legend('widmo I - po offset','widmo II - po offset','widmo po odjeciu'); % legenda na wykresie disp(['na czerwono zostało narysowane widmo po odjęciu']); %save odejmowaniewidm % zapisanie zmiennych z okna Workspace % pod nazwą odejmowaniewidm.mat function f=wspolczynnik(k); % Piotr Chojnacki % III rok informatyka chemiczna % Wrocław dn. 22 maja 2005 % funkcja oblicza współczynnik k korzystając z funkcji numer.m podającej % numer elementu o danej liczbie falowej global z intensx intensy n m widmox widmoy % deklaracja uzycia globalnych zmiennych z funkcji odejmowaniewidm.m pp=0; % zerowanie zmienych oznaczających początek i koniec kk=0; pp=numer(widmox(:,1),n); % podanie numeru elementu za pomocą funkcji % numer kk=numer(widmoy(:,1),m); % obliczanie sumy kwadratu odchyleń % w funkcji odejmowaniewidm.m nadana była początkowa wartość % współczynnika k % k=1 Piotr Chojnacki 4

% w tym momencie funkcja liczy sumę i sama dobiera współczynnik k % wynikiem jest współczynnik k, dla którego otrzymujemy najmniejszą wartość % sumy suma=0; for i=kk:pp suma1=((intensx(i,1))-k*(intensy(i,1))).^2; suma=suma+suma1; end f=suma; % podstawienie pod funkcję obliczonej sumy function pos=numer(x,lf) zp=length(lf); if zp==1 xp=abs(x-lf); [pom pos]=min(xp); else for i=1:zp xp=abs(x-lf(i)); [pom pos(i)]=min(xp); end end Piotr Chojnacki 5

{Przykładowe wywołanie programu dla widm NBUT20 i NBUT80} >> odejmijwidma('nbut20','nbut80'); ------------------------------------------ Funkcja odejmie teraz dwa widma od siebie. ------------------------------------------ Zostało narysowane pierwsze i drugie widmo Piotr Chojnacki 6

Podaj liczbę falową do przeprowadzenia offsetu: 9000 {w przypadku tego widma jest to najlepsza wartość} Zostało narysowane pierwsze i drugie widmo po dokonaniu offsetu Piotr Chojnacki 7

Wybierz przedział dla którego zostanie policzony współczynnik o który zostaną odjęte widma według równania w1-k*w2 poczatek przedziału: 8000 {najlepszy przedział to 8000-9000. Dobrze jest jak widma się w takim przedziale nakładają wtedy współczynnik jest bliski 1 i widma są w całości odjęte.} koniec przedziału: 9000 k = 1.0499 Na czerwono zostało narysowane widmo po odjęciu Piotr Chojnacki 8