From 86b01252d43310e28865c8e9af09f5034c988e76 Mon Sep 17 00:00:00 2001
From: Marek Blok <Marek.Blok@pg.edu.pl>
Date: Fri, 25 Jun 2021 22:39:30 +0200
Subject: [PATCH] Initial version of Ex2

---
 .gitignore                                 |   10 +
 {Cw1 => Ex1}/.vscode/c_cpp_properties.json |    0
 {Cw1 => Ex1}/.vscode/launch.json           |    0
 {Cw1 => Ex1}/.vscode/tasks.json            |    0
 {Cw1 => Ex1}/DSPElib.wav                   |  Bin
 {Cw1 => Ex1}/Ex1_task3.cbp                 |    0
 {Cw1 => Ex1}/Ex1_task3.cpp                 |    2 +-
 {Cw1 => Ex1}/Makefile                      |    0
 {Cw1 => Ex1}/Makefile.main                 |    0
 {Cw1 => Ex1}/ex_1_sig_1.wav                |  Bin
 {Cw1 => Ex1}/ex_1_sig_2.wav                |  Bin
 {Cw1 => Ex1}/matlab/PERgraf.m              |    0
 {Cw1 => Ex1}/matlab/SPECgraf.m             |    0
 {Cw1 => Ex1}/matlab/design_task_2.m        |    0
 {Cw1 => Ex1}/matlab/ex1_task2.coef         |  Bin
 {Cw1 => Ex1}/matlab/perGUI.m               |    0
 {Cw1 => Ex1}/matlab/rcos4.m                |    0
 {Cw1 => Ex1}/matlab/readaudiofile.m        |    0
 {Cw1 => Ex1}/matlab/readme.txt             |    0
 {Cw1 => Ex1}/matlab/save_filter_coef.m     |    0
 {Cw1 => Ex1}/rundot.bat                    |    0
 Ex2/.vscode/c_cpp_properties.json          |   65 +
 Ex2/.vscode/launch.json                    |   29 +
 Ex2/.vscode/tasks.json                     |   33 +
 Ex2/DSPElib.wav                            |  Bin 0 -> 130738 bytes
 Ex2/Ex2_task1.cbp                          |   38 +
 Ex2/Ex2_task1.cpp                          |  147 ++
 Ex2/Makefile                               |   85 ++
 Ex2/Makefile.main                          |   60 +
 Ex2/matlab/PERgraf.m                       | 1565 ++++++++++++++++++++
 Ex2/matlab/SPECgraf.m                      | 1436 ++++++++++++++++++
 Ex2/matlab/design_task_2.m                 |   24 +
 Ex2/matlab/design_tast_1.m                 |   26 +
 Ex2/matlab/ex2_task1.coef                  |  Bin 0 -> 326 bytes
 Ex2/matlab/ex2_task2.coef                  |  Bin 0 -> 170 bytes
 Ex2/matlab/perGUI.m                        |  892 +++++++++++
 Ex2/matlab/rcos4.m                         |   51 +
 Ex2/matlab/readaudiofile.m                 |  215 +++
 Ex2/matlab/readme.txt                      |    1 +
 Ex2/matlab/save_filter_coef.m              |  226 +++
 Ex2/rundot.bat                             |    5 +
 41 files changed, 4909 insertions(+), 1 deletion(-)
 rename {Cw1 => Ex1}/.vscode/c_cpp_properties.json (100%)
 rename {Cw1 => Ex1}/.vscode/launch.json (100%)
 rename {Cw1 => Ex1}/.vscode/tasks.json (100%)
 rename {Cw1 => Ex1}/DSPElib.wav (100%)
 rename {Cw1 => Ex1}/Ex1_task3.cbp (100%)
 rename {Cw1 => Ex1}/Ex1_task3.cpp (98%)
 rename {Cw1 => Ex1}/Makefile (100%)
 rename {Cw1 => Ex1}/Makefile.main (100%)
 rename {Cw1 => Ex1}/ex_1_sig_1.wav (100%)
 rename {Cw1 => Ex1}/ex_1_sig_2.wav (100%)
 rename {Cw1 => Ex1}/matlab/PERgraf.m (100%)
 rename {Cw1 => Ex1}/matlab/SPECgraf.m (100%)
 rename {Cw1 => Ex1}/matlab/design_task_2.m (100%)
 rename {Cw1 => Ex1}/matlab/ex1_task2.coef (100%)
 rename {Cw1 => Ex1}/matlab/perGUI.m (100%)
 rename {Cw1 => Ex1}/matlab/rcos4.m (100%)
 rename {Cw1 => Ex1}/matlab/readaudiofile.m (100%)
 rename {Cw1 => Ex1}/matlab/readme.txt (100%)
 rename {Cw1 => Ex1}/matlab/save_filter_coef.m (100%)
 rename {Cw1 => Ex1}/rundot.bat (100%)
 create mode 100644 Ex2/.vscode/c_cpp_properties.json
 create mode 100644 Ex2/.vscode/launch.json
 create mode 100644 Ex2/.vscode/tasks.json
 create mode 100644 Ex2/DSPElib.wav
 create mode 100644 Ex2/Ex2_task1.cbp
 create mode 100644 Ex2/Ex2_task1.cpp
 create mode 100644 Ex2/Makefile
 create mode 100644 Ex2/Makefile.main
 create mode 100644 Ex2/matlab/PERgraf.m
 create mode 100644 Ex2/matlab/SPECgraf.m
 create mode 100644 Ex2/matlab/design_task_2.m
 create mode 100644 Ex2/matlab/design_tast_1.m
 create mode 100644 Ex2/matlab/ex2_task1.coef
 create mode 100644 Ex2/matlab/ex2_task2.coef
 create mode 100644 Ex2/matlab/perGUI.m
 create mode 100644 Ex2/matlab/rcos4.m
 create mode 100644 Ex2/matlab/readaudiofile.m
 create mode 100644 Ex2/matlab/readme.txt
 create mode 100644 Ex2/matlab/save_filter_coef.m
 create mode 100644 Ex2/rundot.bat

diff --git a/.gitignore b/.gitignore
index de23a0c..604dbce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@ Cw1/Ex1_task3_dbg.exe
 Cw1/Ex1_task3_rls.exe
 Cw1/Ex1_task3.dot
 Cw1/Ex1_task3.gif
+Cw1/Ex1_task3.layout
 Cw1/ex1_task3.wav
 Cw1/log_file.txt
 Cw1/out_win_dbg
@@ -9,3 +10,12 @@ Cw1/out_win_rls
 Cw1/out_linux_dbg
 Cw1/out_linux_rls
 
+Cw2/Ex2_task1_dbg.exe
+Cw2/Ex2_task1.dot
+Cw2/ex2_task1.wav
+Cw2/Ex2_task1.layout
+Cw2/log_file.txt
+Cw2/out_win_dbg
+Cw2/out_win_rls
+Cw2/out_linux_dbg
+Cw2/out_linux_rls
diff --git a/Cw1/.vscode/c_cpp_properties.json b/Ex1/.vscode/c_cpp_properties.json
similarity index 100%
rename from Cw1/.vscode/c_cpp_properties.json
rename to Ex1/.vscode/c_cpp_properties.json
diff --git a/Cw1/.vscode/launch.json b/Ex1/.vscode/launch.json
similarity index 100%
rename from Cw1/.vscode/launch.json
rename to Ex1/.vscode/launch.json
diff --git a/Cw1/.vscode/tasks.json b/Ex1/.vscode/tasks.json
similarity index 100%
rename from Cw1/.vscode/tasks.json
rename to Ex1/.vscode/tasks.json
diff --git a/Cw1/DSPElib.wav b/Ex1/DSPElib.wav
similarity index 100%
rename from Cw1/DSPElib.wav
rename to Ex1/DSPElib.wav
diff --git a/Cw1/Ex1_task3.cbp b/Ex1/Ex1_task3.cbp
similarity index 100%
rename from Cw1/Ex1_task3.cbp
rename to Ex1/Ex1_task3.cbp
diff --git a/Cw1/Ex1_task3.cpp b/Ex1/Ex1_task3.cpp
similarity index 98%
rename from Cw1/Ex1_task3.cpp
rename to Ex1/Ex1_task3.cpp
index 17321af..d4ff011 100644
--- a/Cw1/Ex1_task3.cpp
+++ b/Ex1/Ex1_task3.cpp
@@ -1,4 +1,4 @@
-/*! Laboratory: Advanced signal processing of telecommunication signals
+/*! Laboratory: Advanced signal processing of digital telecommunications
  * (Zaawansowane przetwarzanie sygnałów telekomunikacji cyfrowej)
  *  Ex. 1. task 3.
  *   - impulse response loaded from file
diff --git a/Cw1/Makefile b/Ex1/Makefile
similarity index 100%
rename from Cw1/Makefile
rename to Ex1/Makefile
diff --git a/Cw1/Makefile.main b/Ex1/Makefile.main
similarity index 100%
rename from Cw1/Makefile.main
rename to Ex1/Makefile.main
diff --git a/Cw1/ex_1_sig_1.wav b/Ex1/ex_1_sig_1.wav
similarity index 100%
rename from Cw1/ex_1_sig_1.wav
rename to Ex1/ex_1_sig_1.wav
diff --git a/Cw1/ex_1_sig_2.wav b/Ex1/ex_1_sig_2.wav
similarity index 100%
rename from Cw1/ex_1_sig_2.wav
rename to Ex1/ex_1_sig_2.wav
diff --git a/Cw1/matlab/PERgraf.m b/Ex1/matlab/PERgraf.m
similarity index 100%
rename from Cw1/matlab/PERgraf.m
rename to Ex1/matlab/PERgraf.m
diff --git a/Cw1/matlab/SPECgraf.m b/Ex1/matlab/SPECgraf.m
similarity index 100%
rename from Cw1/matlab/SPECgraf.m
rename to Ex1/matlab/SPECgraf.m
diff --git a/Cw1/matlab/design_task_2.m b/Ex1/matlab/design_task_2.m
similarity index 100%
rename from Cw1/matlab/design_task_2.m
rename to Ex1/matlab/design_task_2.m
diff --git a/Cw1/matlab/ex1_task2.coef b/Ex1/matlab/ex1_task2.coef
similarity index 100%
rename from Cw1/matlab/ex1_task2.coef
rename to Ex1/matlab/ex1_task2.coef
diff --git a/Cw1/matlab/perGUI.m b/Ex1/matlab/perGUI.m
similarity index 100%
rename from Cw1/matlab/perGUI.m
rename to Ex1/matlab/perGUI.m
diff --git a/Cw1/matlab/rcos4.m b/Ex1/matlab/rcos4.m
similarity index 100%
rename from Cw1/matlab/rcos4.m
rename to Ex1/matlab/rcos4.m
diff --git a/Cw1/matlab/readaudiofile.m b/Ex1/matlab/readaudiofile.m
similarity index 100%
rename from Cw1/matlab/readaudiofile.m
rename to Ex1/matlab/readaudiofile.m
diff --git a/Cw1/matlab/readme.txt b/Ex1/matlab/readme.txt
similarity index 100%
rename from Cw1/matlab/readme.txt
rename to Ex1/matlab/readme.txt
diff --git a/Cw1/matlab/save_filter_coef.m b/Ex1/matlab/save_filter_coef.m
similarity index 100%
rename from Cw1/matlab/save_filter_coef.m
rename to Ex1/matlab/save_filter_coef.m
diff --git a/Cw1/rundot.bat b/Ex1/rundot.bat
similarity index 100%
rename from Cw1/rundot.bat
rename to Ex1/rundot.bat
diff --git a/Ex2/.vscode/c_cpp_properties.json b/Ex2/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..159c03c
--- /dev/null
+++ b/Ex2/.vscode/c_cpp_properties.json
@@ -0,0 +1,65 @@
+{
+    "configurations": [
+        {
+            "name": "Windows-Release",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "${workspaceFolder}/../../_DSPE_lib_minGW_/MinGW-W64_8.1.0/include/**"
+            ],
+            "defines": [
+                "WIN32",
+                "__DEBUG__=0"
+            ],
+            "compilerPath": "gcc.exe",
+            "cStandard": "c11",
+            "cppStandard": "c++11",
+            "intelliSenseMode": "gcc-x64"
+        },
+        {
+            "name": "Linux-Release",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "${workspaceFolder}/../../_DSPE_lib_minGW_/MinGW-W64_8.1.0/include/**"
+            ],
+            "defines": [
+                "WIN32",
+                "__DEBUG__=0"
+            ],
+            "compilerPath": "gcc.exe",
+            "cStandard": "c11",
+            "cppStandard": "c++11",
+            "intelliSenseMode": "gcc-x64"
+        },
+        {
+            "name": "Windows-Debug",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "${workspaceFolder}/../../_DSPE_lib_minGW_/MinGW-W64_8.1.0/include/**"
+            ],
+            "defines": [
+                "WIN32",
+                "__DEBUG__=1"
+            ],
+            "compilerPath": "gcc.exe",
+            "cStandard": "c11",
+            "cppStandard": "c++11",
+            "intelliSenseMode": "gcc-x64"
+        },
+        {
+            "name": "Linux-Debug",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "${workspaceFolder}/../../_DSPE_lib_minGW_/MinGW-W64_8.1.0/include/**"
+            ],
+            "defines": [
+                "WIN32",
+                "__DEBUG__=1"
+            ],
+            "compilerPath": "gcc.exe",
+            "cStandard": "c11",
+            "cppStandard": "c++11",
+            "intelliSenseMode": "gcc-x64"
+        }
+],
+    "version": 4
+}
\ No newline at end of file
diff --git a/Ex2/.vscode/launch.json b/Ex2/.vscode/launch.json
new file mode 100644
index 0000000..60af171
--- /dev/null
+++ b/Ex2/.vscode/launch.json
@@ -0,0 +1,29 @@
+{
+    // Use IntelliSense to learn about possible attributes.
+    // Hover to view descriptions of existing attributes.
+    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "(gdb) Ex2 — debug run ",
+            "type": "cppdbg",
+            "request": "launch",
+            "program": "${workspaceFolder}/Ex2_task1_dbg.exe",
+            "args": [],
+            "stopAtEntry": false,
+            "cwd": "${workspaceFolder}",
+            "environment": [],
+            "externalConsole": false,
+            "MIMode": "gdb",
+//            "miDebuggerPath": "d:/CodeBlocks_20_03/MinGW/bin/gdb.exe",
+            "setupCommands": [
+                {
+                    "description": "Włącz formatowanie kodu dla gdb",
+                    "text": "-enable-pretty-printing",
+                    "ignoreFailures": true
+                }
+            ],
+            "preLaunchTask": "Build Ex2_task1.cpp"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/Ex2/.vscode/tasks.json b/Ex2/.vscode/tasks.json
new file mode 100644
index 0000000..41052d6
--- /dev/null
+++ b/Ex2/.vscode/tasks.json
@@ -0,0 +1,33 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    // https://code.visualstudio.com/docs/editor/tasks
+    // ${command:cpptools.activeConfigName}
+    "tasks": [
+        {
+            "label": "Build Ex2_task1.cpp",
+            "type": "shell",
+            "command": "make build -f Makefile.main FILE=Ex2_task1 VS_CFG=${command:cpptools.activeConfigName}",
+            "group": {
+                "kind": "build",
+                "isDefault": true
+            },
+            "presentation": {
+                "echo": true
+            },
+            "problemMatcher": "$gcc"
+        },
+        {
+            "label": "Clean Ex2_task1.cpp",
+            "type": "shell",
+            "command": "make clean -f Makefile.main VS_CFG=${command:cpptools.activeConfigName}",
+            "group": "build",
+            "presentation": {
+                "echo": true
+            },
+            "problemMatcher": "$gcc"
+        }
+
+   ]
+}
\ No newline at end of file
diff --git a/Ex2/DSPElib.wav b/Ex2/DSPElib.wav
new file mode 100644
index 0000000000000000000000000000000000000000..061adc48e0802faf131b45941c4c13b56b41b19a
GIT binary patch
literal 130738
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
TR`5T(Q<7UXQ4-?J!0G=08ad6h

literal 0
HcmV?d00001

diff --git a/Ex2/Ex2_task1.cbp b/Ex2/Ex2_task1.cbp
new file mode 100644
index 0000000..13e9ca7
--- /dev/null
+++ b/Ex2/Ex2_task1.cbp
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="6" />
+	<Project>
+		<Option title="Ex2_task1" />
+		<Option pch_mode="2" />
+		<Option compiler="gcc" />
+		<Build>
+			<Target title="default">
+				<Option output="Ex2_task1" prefix_auto="1" extension_auto="1" />
+				<Option type="1" />
+				<Option compiler="gcc" />
+			</Target>
+		</Build>
+		<Compiler>
+			<Add option="-std=c++0x" />
+			<Add option="-m32" />
+			<Add option="-g" />
+			<Add option="-DWIN32" />
+			<Add directory="../DSPElib/CodeBlocks-m32_TDM_5.1.0/include" />
+			<Add directory="../DSPElib/CodeBlocks-m32_TDM_5.1.0/dbg" />
+		</Compiler>
+		<Linker>
+			<Add option="-static-libgcc" />
+			<Add option="-m32" />
+			<Add library="DSPE" />
+			<Add library="winmm" />
+			<Add directory="../DSPElib/CodeBlocks-m32_TDM_5.1.0/dbg" />
+		</Linker>
+		<Unit filename="Ex2_task1.cpp" />
+		<Extensions>
+			<code_completion />
+			<envvars />
+			<debugger />
+			<lib_finder disable_auto="1" />
+		</Extensions>
+	</Project>
+</CodeBlocks_project_file>
diff --git a/Ex2/Ex2_task1.cpp b/Ex2/Ex2_task1.cpp
new file mode 100644
index 0000000..80bb42a
--- /dev/null
+++ b/Ex2/Ex2_task1.cpp
@@ -0,0 +1,147 @@
+/*! Laboratory: Advanced signal processing of digital telecommunications
+ * (Zaawansowane przetwarzanie sygnałów telekomunikacji cyfrowej)
+ *  Ex. 2. task 1.
+ *   - reading filter impulse response from file 
+ *    (script generating data file: ./matlab/design_task_1.m
+ *   - poliphase interpolator L = 2
+ *
+ * \author Marek Blok 
+ * \date 2021.06.25
+ */
+#include <DSP_lib.h>
+
+void Processing(void)
+{
+  DSP::LoadCoef coef_info;
+  int N_LPF;
+  DSP::Float_vector h_LPF;
+
+  coef_info.Open("ex2_task1.coef", "matlab");
+  N_LPF = coef_info.GetSize(0);
+  if (N_LPF < 1)
+  {  
+    DSP::log << DSP::e::LogMode::Error << "No filter coeeficients: aborting" << endl;
+    return;
+  }
+  else
+  {
+    coef_info.Load(h_LPF);
+  }
+  /*************************************************************/
+
+  DSP::Clock_ptr MasterClock; 
+  MasterClock=DSP::Clock::CreateMasterClock();
+
+  long int Fp1, Fp2;
+
+  DSP::u::WaveInput AudioIn(MasterClock, "DSPElib.wav", ".");
+  Fp1 = AudioIn.GetSamplingRate();
+
+  int N_0, N_1;
+  DSP::Float_vector g0_LPF((N_LPF+1)/2), g1_LPF((N_LPF+1)/2);
+  
+  N_0 = 0;
+  for (int ind = 0; ind < N_LPF; ind+= 2)
+  {
+      g0_LPF[N_0] = h_LPF[ind];
+      N_0++;
+  }
+  N_1 = 0;
+  for (int ind = 1; ind < N_LPF; ind+= 2)
+  {
+      g1_LPF[N_1] = h_LPF[ind];
+      N_1++;
+  }
+      
+  
+  DSP::u::FIR InterpFIR_0(g0_LPF);     
+  InterpFIR_0.SetName("0");
+  DSP::u::FIR InterpFIR_1(g1_LPF);     
+  InterpFIR_1.SetName("1");
+
+  Fp2 = 2*Fp1;
+  DSP::u::Zeroinserter Zeroinserter_0(MasterClock, 2U);
+  Zeroinserter_0.SetName("0");
+  DSP::u::Zeroinserter Zeroinserter_1(MasterClock, 2U);
+  Zeroinserter_1.SetName("1");
+  
+  
+  DSP::u::Delay Z_1(1);
+  Z_1.SetName("1");
+  DSP::u::Addition Sum(2);
+  
+  // Output to the soundcard 
+  DSP::u::AudioOutput SoundOut(Fp2, 1, 16);
+  // Output to the mono 16bit *.wav file 
+  DSP::u::FileOutput FileOut("ex2_task1.wav", DSP::e::SampleType::ST_short, 1, DSP::e::FileType::FT_wav, Fp2);
+
+  /*************************************************************/
+  // Connections definitions
+  AudioIn.Output("out") >> InterpFIR_0.Input("in");
+  InterpFIR_0.Output("out") >> Zeroinserter_0.Input("in");
+
+  AudioIn.Output("out") >> InterpFIR_1.Input("in");
+  InterpFIR_1.Output("out") >> Zeroinserter_1.Input("in");
+  Zeroinserter_1.Output("out") >> Z_1.Input("in");
+
+  Zeroinserter_0.Output("out") >> Sum.Input("in1");
+  Z_1.Output("out") >> Sum.Input("in2");
+  
+  Sum.Output("out") >> SoundOut.Input("in");
+  Sum.Output("out") >> FileOut.Input("in");
+  
+  
+  /////////////////////////////////
+  // check if there are signals 
+  // connected to all inputs  
+  DSP::Component::CheckInputsOfAllComponents();
+  
+  // *********************************** //
+  DSP::Clock::SchemeToDOTfile(MasterClock, "Ex2_task1.dot");
+ 
+  // *********************************** //
+  int SamplesInSegment = 512;
+  __int64 NoOfSamplesProcessed = 0;
+  // 10 seconds
+  #define MAX_SAMPLES_TO_PROCESS 10*Fp1 
+  while(NoOfSamplesProcessed < MAX_SAMPLES_TO_PROCESS) 
+  {
+
+    // ********************************************************** //
+    DSP::Clock::Execute(MasterClock, SamplesInSegment);
+    // ********************************************************** //
+    
+    if (AudioIn.GetBytesRead() > 0)
+    {
+        NoOfSamplesProcessed = 0; // Play the whole file
+    } 
+    else // Play 200ms more
+    {
+      if (NoOfSamplesProcessed < MAX_SAMPLES_TO_PROCESS - Fp1/5) 
+          NoOfSamplesProcessed = MAX_SAMPLES_TO_PROCESS - Fp1/5;
+    }
+
+    NoOfSamplesProcessed += SamplesInSegment;
+    // ********************************************************** //
+  }
+
+}
+
+
+int main(int argn, char *args[])
+{
+  /*************************************************************/
+  // Log file setup  
+  DSP::log.SetLogFileName("log_file.txt");
+  DSP::log.SetLogState(DSP::e::LogState::file | DSP::e::LogState::console);
+
+  DSP::log << DSP::lib_version_string() << endl << endl;
+  /*************************************************************/
+  
+  Processing();
+
+  /*************************************************************/
+  DSP::Clock::FreeClocks();
+  
+  return 0;
+}
diff --git a/Ex2/Makefile b/Ex2/Makefile
new file mode 100644
index 0000000..c94c79f
--- /dev/null
+++ b/Ex2/Makefile
@@ -0,0 +1,85 @@
+# Run: make Release 
+# Run: make Debug 
+CC=g++
+# comflag = -m32
+# comflag = -m64
+comflag = $(COMFLAG)
+
+DSPElib_DIR = ../../_DSPE_lib_minGW_/$(DSPElib_SUBDIR)
+
+SRC_DIR = .
+SRC_CPP_SUBDIR = .
+
+#DFLAGS         = -DWIN32 -DDEVCPP 
+
+# -D INCLUDE_DSPE_EXAMPLES # TODO: uĹźycie w ramach kompilacji Main.cpp w trybie DEBUG
+ifeq ($(MODE),Release)
+	CFLAGS = $(comflag) -std=c++0x -O3 -Wall -c -fmessage-length=0 -fno-strict-aliasing 
+	LINKER_FLAGS = $(comflag)  -s -static-libgcc -static-libstdc++ $(MISC_LINKER_FLAGS)
+	INCLUDES := -I"$(DSPElib_DIR)/include" -I"$(DSPElib_DIR)/include/rls"
+	DSPElib_FULLDIR = $(DSPElib_DIR)/rls
+	EXE_FILENAME = $(CPP_FILENAME)_rls.exe
+else
+	CFLAGS   = $(comflag) -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -W -Wshadow -Wconversion -fstrict-aliasing -fmax-errors=5
+	LINKER_FLAGS   = $(comflag)  -static-libgcc -static-libstdc++ $(MISC_LINKER_FLAGS)
+	INCLUDES := -I"$(DSPElib_DIR)/include" -I"$(DSPElib_DIR)/include/dbg"
+	DSPElib_FULLDIR = $(DSPElib_DIR)/dbg
+	EXE_FILENAME = $(CPP_FILENAME)_dbg.exe
+endif
+# -U__STRICT_ANSI__ jest potrzebne do kompilacji debug_new.cpp, jezeli pominac ten plik to mozna rowniez wyrzucic te opcje
+#CFLAGS_debug   = $(comflag) -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -W -Wshadow -Wco#nversion -fstrict-aliasing -U__STRICT_ANSI__
+
+SOURCES_NAMES = 
+SOURCES_NAMES += $(CPP_FILENAME).cpp 
+SOURCES = $(addprefix $(SRC_CPP_SUBDIR)/,$(SOURCES_NAMES))
+
+SOURCES_DBG =
+# SOURCES_DBG += $(SRC_DIR)/Main.cpp
+
+# ################################################# #
+# DEBUG
+OBJECTS 		  := $(SOURCES:%.cpp=$(OUT_DIR)/%.o)
+DEPENDS 		  := $(SOURCES:%.cpp=$(OUT_DIR)/%.d)
+
+# ################################################# #
+-include $(DEPENDS)
+
+all: build
+
+
+# ########################################################################################### #	
+# ########################################################################################### #	
+build: $(SRC_DIR)/$(EXE_FILENAME)
+
+$(SRC_DIR)/$(EXE_FILENAME): $(OBJECTS)
+	@echo $(EXE_FILENAME)
+	$(CC) -L$(DSPElib_FULLDIR) $(OBJECTS) -o"$(SRC_DIR)/$(EXE_FILENAME)" $(LINKER_FLAGS) -lDSPE $(LIBS)
+
+# ########################################################################################### #	
+# ########################################################################################### #	
+# Z podanej listy usuwany $(OUT_DIR_WIN_RLS)/ oraz '.o' zamieniamy na '.cpp'
+$(OBJECTS): $(OUT_DIR)/%.o : %.cpp
+	@echo $(@D) $< $@
+
+	#mkdir -p $(OUT_DIR)/$(SRC_CPP_SUBDIR)
+	mkdir -p $(@D)
+	$(CC) $(DFLAGS) $(CFLAGS) $(INCLUDES) -MMD $< -o $@
+
+
+clean:
+	@echo MODE: $(MODE)
+
+	@if [ -d "$(OUT_DIR)" ]; then \
+		echo "cleaning $(OUT_DIR_DBG) ..."; \
+		#find $(OUT_DIR)/ -name "*.o" -type f -delete; \
+		rm -rf $(OUT_DIR)/*.d; \
+		rm -rf $(OUT_DIR)/*.o; \
+		rm -rf $(OUT_DIR); \
+		echo "cleaned $(OUT_DIR)"; \
+	fi 
+	rm -rf "$(SRC_DIR)/$(EXE_FILENAME)"; \
+	#rm -rf "$(SRC_DIR)/*.gif"; \
+	#rm -rf "$(SRC_DIR)/*.dot"; \
+	
+.PHONY: all build clean
+
diff --git a/Ex2/Makefile.main b/Ex2/Makefile.main
new file mode 100644
index 0000000..cf6c368
--- /dev/null
+++ b/Ex2/Makefile.main
@@ -0,0 +1,60 @@
+# (View > Command Palette) => "Convert Indentation to Tabs"
+
+ifeq ($(VS_CFG),Windows-Debug)
+	MAKEFILE = "Makefile"
+	MODE = Debug
+	COMFLAG = -m64
+	
+	OUT_DIR = ./out_win_dbg
+	DSPElib_SUBDIR = MinGW-W64_8.1.0
+	MISC_LINKER_FLAGS = -static
+	LIBS = -lwinmm -lws2_32
+	DFLAGS = -DWIN32 -DDEVCPP 
+endif
+ifeq ($(VS_CFG),Windows-Release)
+	MAKEFILE = "Makefile"
+	MODE = Release
+	COMFLAG = -m64
+	
+	OUT_DIR = ./out_win_rls
+	DSPElib_SUBDIR = MinGW-W64_8.1.0
+	MISC_LINKER_FLAGS = -static
+	LIBS = -lwinmm -lws2_32
+	DFLAGS = -DWIN32 -DDEVCPP
+endif
+ifeq ($(VS_CFG),Linux-Debug)
+	MAKEFILE = "Makefile"
+	MODE = Debug
+	COMFLAG = 
+	
+	OUT_DIR = ./out_linux_dbg
+	DSPElib_SUBDIR = $(shell gcc -dumpmachine)-gcc_$(shell gcc -dumpversion)
+	MISC_LINKER_FLAGS = 
+	LIBS := -lasound
+	DFLAGS = 
+endif
+ifeq ($(VS_CFG),Linux-Release)
+	MAKEFILE = "Makefile"
+	MODE = Release
+	COMFLAG = 
+	
+	OUT_DIR = ./out_linux_rls
+	DSPElib_SUBDIR = $(shell gcc -dumpmachine)-gcc_$(shell gcc -dumpversion)
+	MISC_LINKER_FLAGS = 
+	LIBS := -lasound
+	DFLAGS = 
+endif
+
+
+
+build: 
+	@echo "Building $(VS_CFG)"
+	@echo $(VS_CFG): $(MODE) // $(MAKEFILE)
+	make build CPP_FILENAME=$(FILE) MODE=$(MODE) COMFLAG=$(COMFLAG) DFLAGS="$(DFLAGS)" LIBS="$(LIBS)" OUT_DIR=$(OUT_DIR) DSPElib_SUBDIR=$(DSPElib_SUBDIR) MISC_LINKER_FLAGS="$(MISC_LINKER_FLAGS)" -f $(MAKEFILE)
+
+clean: 
+	@echo "Cleaning $(VS_CFG)"
+	@echo $(VS_CFG): $(MODE) // $(MAKEFILE)
+	make clean MODE=$(MODE) OUT_DIR=$(OUT_DIR) -f $(MAKEFILE)
+
+
diff --git a/Ex2/matlab/PERgraf.m b/Ex2/matlab/PERgraf.m
new file mode 100644
index 0000000..a231ec9
--- /dev/null
+++ b/Ex2/matlab/PERgraf.m
@@ -0,0 +1,1565 @@
+function PERgraf(Akcja, param)
+
+global supress_msgbox
+
+% \fixed 2021.04.09 fileread replaced with audiofileread
+%                   use addpath only when ont deployed
+%                   added rmpath on Exit and DeleteFcn
+% \fixed 2019.03.06 figure now uses IntegerHandle == 'off' so it does not
+%                   conflict with other tools
+% \fixed 2018.04.14 included readaudiofile (previously fileread)
+%                   replaced boxcar with rectwin
+%                   added selec_dir button
+% \fixed 2018.03.02 pwelch: warning for L < M
+% \fixed 2015.10.19 pwelch + detrend is now used instead of psd
+%
+% \fixed 2006.12.20 segment length for raw and modified periodographs is
+%                   now automaticaly set based on signal length
+%                   This spares us annoying warnings about L and M differences
+% \added 2006.10.10 added 'lock' option to lock zoom scale
+% \added 2006.10.09 added Fs, it can also be used in edit fields like 'x' in the same way like A 
+% \added 2006.10.09 added popupmenu with periodogrph type selection
+% \fixed 2005.11.10 "delete" for last element resets it
+% \fixed 2005.11.10 "new" now copies current setting instead off standard ones 
+% \Fixed 2005.11.10 dodano "supress_msgbox"
+% \Fixed 2005.11.10 przy zmianie A wszystkie wykresy sš przerysowane
+% \Fixed 2005.11.10 niewidoczny współczynnik 10^-x dla małych sygnałów
+% \Fixed 2005.11.10 dodano akcję "actionA"
+%   - "A_edit"
+%   - "dA_edit"
+%   - "A_slider"
+%   - "minA_edit"
+%   - "maxA_edit"
+%   - "A_plus_radio"
+%   - "A_razy_radio"
+%
+% \Fixed 2005.11.02 nakładkowanie podawane w procentach !!! 
+% \Fixed 2005.11.02 detrender domyœlnie wyłšczony
+% \Fixed 2005.11.02 Przełšczanie pomiędzy wzorcami nie uaktualnia N
+% \Fixed 2005.11.02 message when error in entered data
+% \Fixed 2005.11.02 wyœwietlany fragment sygnału o długoœci ostanio
+%   wprowadzonego L, a nie najdłuższego z wszystkich sygnałów (added max_L)
+% \Fixed 2005.11.02 Refresh Button
+% \Fixed 2005.11.02 Use hourglass when busy
+% \Fixed 2005.11.02 Mean, var should be updated acording to choose and use colour
+% \Fixed 2005.11.02 Warning when M > K.
+%
+%
+% Szacowanie długoœci segmentu na podstawie liczby segmentów N, długoœci cišgu L i wielkoœci nakładkowania O: M = L/(N-O*(N-1))
+if nargin == 0  % LAUNCH GUI
+
+%  fig = openfig(mfilename,'reuse'); return; %ZapiszFig(1,'PerGUI.m')
+  if isempty(findobj(0, 'tag', 'perGUI')) 
+%    set(0, 'DefaultFigureVisible', 'off'); 	   
+    fig = perGUI;
+    set(fig, 'IntegerHandle','off');
+%    set(0, 'DefaultFigureVisible', 'on'); 	   
+    set(fig,'tag', 'perGUI', 'Visible', 'on', 'Units', 'pixels', 'DeleteFcn', 'PERgraf(''Exit'')');
+    %set(fig,'NumberTitle', 'off', 'Name',['Periodogramowe estymatory widma gęstoœci mocy ver. 1.4 (dr inż. Marek Blok 16.04.2018) ', pwd])    
+    UpdateFigTitle();
+
+    PERgraf('Init');
+    PERgraf('signal');
+%    PERgraf('per');
+  else
+    PERgraf('Exit');
+  end
+  return;
+end;
+
+if ~isstr(Akcja) % INVOKE NAMED SUBFUNCTION OR CALLBACK
+  disp('Something''s wrong');
+  return;
+end;
+
+% Generate a structure of handles to pass to callbacks, and store it. 
+fig=findobj(0, 'tag', 'perGUI');
+hEditN=findobj(fig,'tag', 'N_edit');
+hEditM=findobj(fig,'tag', 'M_edit');
+hEditL=findobj(fig,'tag', 'L_edit');
+hEditK=findobj(fig,'tag', 'K_edit');
+hEditO=findobj(fig,'tag', 'O_edit');
+hEditW=findobj(fig,'tag', 'w_edit');
+hEditX=findobj(fig,'tag', 'x_edit');
+h_real=findobj(fig,'tag', 'real_checkbox');
+h_dB=findobj(fig,'tag', 'dB_checkbox');
+h_rgb(1)=findobj(fig,'tag', 'r_checkbox');
+h_rgb(2)=findobj(fig,'tag', 'g_checkbox');
+h_rgb(3)=findobj(fig,'tag', 'b_checkbox');
+hEditNoise=findobj(fig,'tag', 'Noise_edit');
+hEditName=findobj(fig,'tag', 'Name_edit');
+hMenu=findobj(fig,'tag', 'choose_popupmenu');
+h_det=findobj(fig,'tag', 'detrend_checkbox');
+ha=get(fig, 'UserData');
+Ktory=get(hMenu,'Value');  
+hEdit_dY=findobj(fig,'tag', 'dY_edit');
+hParam=findobj(fig,'tag', 'text20');
+% \fixed 2005.11.10
+hA.A_edit=findobj(fig,'tag', 'A_edit');
+hA.dA_edit=findobj(fig,'tag', 'dA_edit');
+hA.A_slider=findobj(fig,'tag', 'A_slider');
+hA.minA_edit=findobj(fig,'tag', 'minA_edit');
+hA.maxA_edit=findobj(fig,'tag', 'maxA_edit');
+hA.A_plus_radio=findobj(fig,'tag', 'A_plus_radio');
+hA.A_razy_radio=findobj(fig,'tag', 'A_razy_radio');
+% /fixed 2005.11.10
+% \added 2006.10.09
+h_per_type=findobj(fig,'tag', 'per_type_popupmenu');
+h_Fs=findobj(fig,'tag', 'Fs_edit');
+h_lock=findobj(fig,'tag', 'lock_checkbox');
+% /added 2006.10.09
+
+
+if strcmp(Akcja, 'Exit')
+  if (~isdeployed)
+    path2rm = getappdata(fig, 'pwd');
+    rmpath(path2rm);
+  end
+  close(fig);
+  disp('Closed PERgraf');
+  return;
+  
+elseif strcmp(Akcja, 'select_dir')
+  dir = uigetdir();
+  if ischar(dir),
+    cd(dir);
+    UpdateFigTitle();
+  end
+  return;
+  
+elseif strcmp(Akcja, 'Init')
+  % UserData przechowuje wartoœci domyœlne
+  supress_msgbox = 0;
+
+  if (~isdeployed)
+    setappdata(fig, 'pwd', pwd);
+    addpath(pwd,'-end');
+  end
+  
+  set(hEditX,'UserData','randn(1,L)');
+  set(hEditX,'String','randn(1,L)');
+  set(hEditX,'Max', 2);
+
+  set(hEditW,'UserData','rectwin(M)');
+  set(hEditW,'String','rectwin(M)');
+
+  set(hEditL,'UserData','100');
+  set(hEditL,'String','100');
+  set(hEditM,'UserData','100');
+  set(hEditM,'String','100');
+  set(hEditNoise,'UserData','-600');
+  set(hEditNoise,'String','-600');
+  
+%  set(hEditN,'UserData','1');
+%  set(hEditN,'String','1');
+  set(hEditO,'UserData','0');
+  set(hEditO,'String','0');
+
+  set(hEditK,'UserData','1024');
+  set(hEditK,'String','1024');
+
+  set(hEditName,'String','new');
+  set(hMenu,'String','new');
+
+  set(h_real,'UserData',1);
+  set(h_real,'Value',1);
+
+  set(h_dB,'UserData',0);
+  set(h_dB,'Value',0);
+  
+  set(h_det,'UserData',0);  % \Fixed 2005.11.02 - detrender domyœlnie wyłšczony
+  set(h_det,'Value',0);
+  
+  pom(1,1:3)=[0 0 0];
+  for ind=1:3,
+    set(h_rgb(ind),'Value', pom(1,ind));
+  end;
+  set(h_rgb(1),'UserData',pom);
+
+  ha(1)=findobj(fig,'tag', 'Signal_re_axes');
+  ha(2)=findobj(fig,'tag', 'Signal_im_axes');
+  ha(3)=findobj(fig,'tag', 'per_axes');
+  set(fig, 'UserData', ha, 'Units', 'Pixel');
+
+  set(hMenu,'UserData', [NaN, NaN, NaN, 1, -100, 5, 1, 0, 0]); %handles & maximal values
+
+  set(hEdit_dY,'String','120');
+  
+  % \fixed 2005.11.10
+  A.A = 1.0; A.dA = 0.1;
+  A.min=0.0; A.max=2.0;
+  A.is_plus=1;
+  set(hA.A_edit, 'UserData', A);
+  % UpdateA(hA);
+  set(hA.A_edit, 'String', A.A);
+  set(hA.dA_edit, 'String', A.dA);
+  set(hA.minA_edit, 'String', A.min);
+  set(hA.maxA_edit, 'String', A.max);
+  set(hA.A_plus_radio, 'Value', A.is_plus);
+  set(hA.A_razy_radio, 'Value', 1-A.is_plus);
+  set(hA.A_slider, 'min', A.min, 'max', A.max, 'value', A.A);
+  % /fixed 2005.11.10
+  % \added 2006.10.09
+  set(h_per_type, 'UserData', 1); % surowy periodograf jako domyœlny
+  set(h_Fs, 'UserData', 'Inf');
+  set(h_Fs, 'String', 'Inf');
+  % \added 2006.10.09
+  
+  UpdatePergraphGUI(1, fig);
+  return;
+  
+elseif strcmp(Akcja, 'change_name')
+  pom=get(hMenu,'String');
+  pom2=get(hEditName,'String');
+  pom(Ktory,1:length(pom2)+1)=[pom2 0];
+  set(hMenu,'String',pom);
+  set(hMenu, 'Value', Ktory);
+  return;  
+
+elseif strcmp(Akcja, 'Fs_changed')
+  tekst=[get(h_Fs, 'String') 0];
+  pom=get(h_Fs,'UserData');
+  pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+      zeros(1, max([1; size(pom,2); length(tekst)]));
+  pom(Ktory,1:length(tekst))=tekst;
+  set(h_Fs,'UserData', setstr(pom));
+  
+  tekstX=get(hEditX,'UserData');  tekstX=tekstX(Ktory,:);
+  ind=find(tekstX==0);
+  if ~isempty(ind)
+    tekstX=tekstX(1:ind(1)-1);
+  end;
+  if ~isempty(findstr(tekstX, 'Fs'))
+    PERgraf('signal', Ktory);
+  end
+  PERgraf('per', Ktory);
+
+elseif strcmp(Akcja, 'new')
+  old_Ktory=get(hMenu,'Value');  
+
+  pom=get(hMenu,'String');
+  Ktory=size(pom,1)+1;
+  pom(Ktory,1:4)=['new' 0];
+  set(hMenu,'String',pom);
+  
+  
+  pom=get(hEditX,'UserData');
+%   pom(Ktory,1:11)=['randn(1,L)' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditX,'UserData',pom);
+  pom=get(hEditW,'UserData');
+%   pom(Ktory,1:10)=['rectwin(M)' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditW,'UserData',pom);
+
+  pom=get(hEditL,'UserData');
+%   pom(Ktory,1:4)=['100' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditL,'UserData',pom);
+  pom=get(hEditM,'UserData');
+%   pom(Ktory,1:4)=['100' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditM,'UserData',pom);
+  pom=get(hEditNoise,'UserData');
+%   pom(Ktory,1:5)=['-100' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditNoise,'UserData',pom);
+  
+%  pom=get(hEditN,'UserData');
+%  pom(Ktory,1:2)=['1' 0];
+%  set(hEditN,'UserData',pom);
+  pom=get(hEditO,'UserData');
+%   pom(Ktory,1:2)=['0' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditO,'UserData',pom);
+
+  pom=get(hEditK,'UserData');
+%   pom(Ktory,1:5)=['1024' 0];
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(hEditK,'UserData',pom);
+
+  pom=get(hMenu,'UserData');
+  pom(Ktory,1:size(pom,2))=ones(1,size(pom,2))*NaN;
+  set(hMenu,'UserData',pom);
+
+  pom=get(h_real,'UserData');
+%   pom(Ktory,1)=1;
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(h_real,'Value', pom(Ktory,1));
+  set(h_real,'UserData',pom);
+
+  pom=get(h_det,'UserData');
+%   pom(Ktory,1)=0; % \Fixed 2005.11.02
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(h_det,'Value', pom(Ktory,1));
+  set(h_det,'UserData',pom);
+
+  pom=get(h_rgb(1),'UserData');
+  pom(Ktory,1:3)=[0 0 0];
+  for ind=1:3,
+    set(h_rgb(ind),'Value', pom(Ktory,ind));
+  end;
+  set(h_rgb(1),'UserData',pom);
+
+  set(hMenu,'Value', Ktory);
+  
+  % \added 2006.10.09
+  pom = get(h_per_type, 'UserData');
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(h_per_type,'Value', pom(Ktory,1));
+  set(h_per_type,'UserData',pom);
+  pom = get(h_Fs, 'UserData');
+  pom(Ktory,:)=pom(old_Ktory,:);
+  set(h_Fs,'String', pom(Ktory,:));
+  set(h_Fs,'UserData',pom);
+  % /added 2006.10.09
+  
+  PERgraf('Choose');
+  PERgraf('signal', Ktory);
+  return;
+  
+elseif strcmp(Akcja, 'Reset')
+  Ktory=get(hMenu,'Value');  
+
+  pom=get(hMenu,'String');
+  pom(Ktory,1:4)=['new' 0];
+  set(hMenu,'String',pom);
+  
+  
+  pom=get(hEditX,'UserData');
+  pom(Ktory,1:11)=['randn(1,L)' 0];
+  set(hEditX,'UserData',pom);
+  pom=get(hEditW,'UserData');
+  pom(Ktory,1:10)=['rectwin(M)' 0];
+  set(hEditW,'UserData',pom);
+
+  pom=get(hEditL,'UserData');
+  pom(Ktory,1:4)=['100' 0];
+  set(hEditL,'UserData',pom);
+  pom=get(hEditM,'UserData');
+  pom(Ktory,1:4)=['100' 0];
+  set(hEditM,'UserData',pom);
+  pom=get(hEditNoise,'UserData');
+  pom(Ktory,1:5)=['-600' 0];
+  set(hEditNoise,'UserData',pom);
+  
+%  pom=get(hEditN,'UserData');
+%  pom(Ktory,1:2)=['1' 0];
+%  set(hEditN,'UserData',pom);
+  pom=get(hEditO,'UserData');
+  pom(Ktory,1:2)=['0' 0];
+  set(hEditO,'UserData',pom);
+
+  pom=get(hEditK,'UserData');
+  pom(Ktory,1:5)=['1024' 0];
+  set(hEditK,'UserData',pom);
+
+  pom=get(hMenu,'UserData');
+  for ind=1:3,
+    if isfinite(pom(Ktory,ind))
+      delete(pom(Ktory,ind));
+    end
+  end
+%   pom(Ktory,:)=[];
+  pom(Ktory,1:size(pom,2))=ones(1,size(pom,2))*NaN;
+  set(hMenu,'UserData',pom);
+
+  pom=get(h_real,'UserData');
+  pom(Ktory,1)=1;
+  set(h_real,'Value', pom(Ktory,1));
+  set(h_real,'UserData',pom);
+
+  pom=get(h_det,'UserData');
+  pom(Ktory,1)=0; % \Fixed 2005.11.02
+  set(h_det,'Value', pom(Ktory,1));
+  set(h_det,'UserData',pom);
+
+  pom=get(h_rgb(1),'UserData');
+  pom(Ktory,1:3)=[0 0 0];
+  for ind=1:3,
+    set(h_rgb(ind),'Value', pom(Ktory,ind));
+  end;
+  set(h_rgb(1),'UserData',pom);
+
+  set(hMenu,'Value', Ktory);
+  
+  % \added 2006.10.09
+  pom = get(h_per_type, 'UserData');
+  pom(Ktory,1)=1;
+  set(h_per_type,'Value', pom(Ktory,1));
+  set(h_per_type,'UserData',pom);
+  pom = get(h_Fs, 'UserData');
+  pom(Ktory,1:4)=['Inf', 0];
+  set(h_Fs,'String', pom(Ktory,:));
+  set(h_Fs,'UserData',pom);
+  % /added 2006.10.09
+
+  PERgraf('Choose');
+  PERgraf('signal', Ktory);
+  return;
+  
+elseif strcmp(Akcja, 'delete')
+  pom=get(hMenu,'String');
+  if size(pom,1)==1,
+    PERgraf('Reset');
+    return;
+  end;
+  pom(Ktory,:)=[];
+  set(hMenu,'String',pom);
+
+  
+  pom=get(hEditX,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditX,'UserData',pom);
+  pom=get(hEditW,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditW,'UserData',pom);
+
+  pom=get(hEditL,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditL,'UserData',pom);
+  pom=get(hEditM,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditM,'UserData',pom);
+  pom=get(hEditNoise,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditNoise,'UserData',pom);
+  
+%  pom=get(hEditN,'UserData');
+%  pom(Ktory,:)=[];
+%  set(hEditN,'UserData',pom);
+  pom=get(hEditO,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditO,'UserData',pom);
+
+  pom=get(hEditK,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditK,'UserData',pom);
+
+  pom=get(hMenu,'UserData');
+  for ind=1:3,
+    if isfinite(pom(Ktory,ind))
+      delete(pom(Ktory,ind));
+    end
+  end
+  pom(Ktory,:)=[];
+  set(hMenu,'UserData',pom);
+
+  pom=get(h_real,'UserData');
+  pom(Ktory,:)=[];
+  set(h_real,'UserData',pom);
+  
+  pom=get(h_det,'UserData');
+  pom(Ktory,:)=[];
+  set(h_det,'UserData',pom);
+  
+  pom=get(h_rgb(1),'UserData');
+  pom(Ktory,:)=[];
+  set(h_rgb(1),'UserData',pom);
+  set(hMenu,'Value', 1);
+
+  % \added 2006.10.09
+  pom = get(h_per_type, 'UserData');
+  pom(Ktory,:)=[];
+  set(h_per_type,'UserData',pom);
+  pom = get(h_Fs, 'UserData');
+  pom(Ktory,:)=[];
+  set(h_Fs,'UserData',pom);
+  % /added 2006.10.09
+  
+  PERgraf('Choose');
+  PERgraf('signal', 1); % \Fixed 2005.11.02
+  return;
+  
+% Changing previously entered data set  
+elseif strcmp(Akcja, 'Choose')
+  %selected new filter response
+  pom=get(hMenu,'String');
+  ind=find(pom(Ktory,:)==0);
+  if isempty(ind)
+    ind=size(pom,2);
+  else
+    ind=ind(1)-1;
+  end
+  set(hEditName,'String',pom(Ktory,1:ind));
+
+  pom=get(hEditX,'UserData');
+  set(hEditX, 'String', pom(Ktory,:));
+  pom=get(hEditW,'UserData');
+  set(hEditW, 'String', pom(Ktory,:));
+
+  pom=get(hEditL,'UserData');
+  set(hEditL, 'String', pom(Ktory,:));
+%   tmp_=['L=' pom(Ktory,:) ';']
+%   eval(tmp_, 'L=0;'); % \Fixed 2005.11.02 
+  L=eval(pom(Ktory,:), '0'); % \Fixed 2005.11.02 
+  
+  pom=get(hEditM,'UserData');
+  set(hEditM, 'String', pom(Ktory,:));
+%   eval(['M=' pom(Ktory,:) ';'], 'M=0;'); % \Fixed 2005.11.02 
+  M=eval(pom(Ktory,:), '0'); % \Fixed 2005.11.02 
+  
+  pom=get(hEditNoise,'UserData');
+  set(hEditNoise, 'String', pom(Ktory,:));
+  
+  pom=get(hEditO,'UserData');
+  set(hEditO, 'String', pom(Ktory,:));
+%   eval(['O=' pom(Ktory,:) ';'], 'O=0;'); % \Fixed 2005.11.02 
+  O=eval(pom(Ktory,:), '0'); % \Fixed 2005.11.02 
+  O=round(O/100*M); % \Fixed 2005.11.03 nakładkowanie podawane w procentach !!! 
+
+%  pom=get(hEditN,'UserData');
+%  set(hEditN, 'String', pom(Ktory,:));
+  N = fix((L-O)/(M-O)); % \Fixed 2005.11.02 Updates N when user data set is changed
+  set(hEditN, 'String', sprintf('%i', N));
+  
+
+  pom=get(hEditK,'UserData');
+  set(hEditK, 'String', pom(Ktory,:));
+
+  pom=get(h_real,'UserData');
+  set(h_real,'Value', pom(Ktory,1));
+
+  pom=get(h_det,'UserData');
+  set(h_det,'Value', pom(Ktory,1));
+
+  pom=get(h_rgb(1),'UserData');
+  for ind=1:3,
+    set(h_rgb(ind),'Value', sign(pom(Ktory,ind)));
+  end;
+
+  % \added 2006.10.09
+  pom = get(h_per_type, 'UserData');
+  per_type = pom(Ktory,1);
+  set(h_per_type,'Value', pom(Ktory,1));
+  pom = get(h_Fs, 'UserData');
+  set(h_Fs,'String', pom(Ktory,:));
+  % /added 2006.10.09
+
+  % \Fixed 2005.11.02
+  pom=get(hMenu,'UserData');
+  psd_mean = pom(:,8); % \Fixed 2005.11.02
+  psd_var = pom(:,9); % \Fixed 2005.11.02
+  set(hParam,'string',sprintf('mean=%f\r\nvar =%f',psd_mean(Ktory),psd_var(Ktory)));
+  pom=get(h_rgb(1),'UserData');
+  kolor=pom(Ktory,:);
+  set(hParam, 'ForegroundColor', kolor); % \Fixed 2005.11.02
+  % /Fixed 2005.11.02
+  
+%  PERgraf('signal', Ktory);
+  UpdatePergraphGUI(per_type, fig);
+  return;
+  
+elseif strcmp(Akcja, 'signal')
+  set(fig, 'Pointer', 'watch'); % \Fixed 2005.11.02
+  if nargin==2,
+    Ktory=param;
+  else
+    %save strings
+    tekst=[get(hEditL, 'String') 0];
+    pom=get(hEditL,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditL,'UserData', setstr(pom));
+    
+    tekst=[get(hEditNoise, 'String') 0];
+    pom=get(hEditNoise,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditNoise,'UserData', setstr(pom));
+    
+    tekst=get(hEditX, 'String').';
+    tekst=[tekst(:); 0].';
+    pom=get(hEditX,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditX,'UserData', setstr(pom));
+    
+    tekst=get(h_real, 'Value');
+    pom=get(h_real,'UserData');
+    pom(Ktory,1)=tekst;
+    set(h_real,'UserData', pom);
+  end;
+
+  pom=get(hMenu,'UserData');
+  hp_re=pom(:,1);
+  hp_im=pom(:,2);
+  hp_per=pom(:,3);
+  max_x=pom(:,4);
+  min_per=pom(:,5);
+  max_per=pom(:,6);
+  max_L = pom(:,7); % \Fixed 2005.11.02
+  psd_mean = pom(:,8); % \Fixed 2005.11.02
+  psd_var = pom(:,9); % \Fixed 2005.11.02
+
+  
+  %generate signal
+  tekstL=get(hEditL,'UserData');  tekstL=tekstL(Ktory,:);
+  ind=find(tekstL==0);
+  if ~isempty(ind)
+    tekstL=tekstL(1:ind(1)-1);
+  end;
+%  eval(['L=' tekstL ';'], 'L=1;')
+  L = round(getVal(tekstL, 1, hA, 'Error in parameter L')); % \Fixed 2005.11.02
+  if L < 1,
+    L = 1;
+  end
+  max_L(Ktory) = L;  % \Fixed 2005.11.02
+
+  A = get(hA.A_edit, 'UserData');
+  A = A.A;
+
+  % \added 2006.10.09
+  tekst_Fs=get(h_Fs,'UserData');  tekst_Fs=tekst_Fs(Ktory,:);
+  ind=find(tekst_Fs==0);
+  if ~isempty(ind)
+    tekst_Fs=tekst_Fs(1:ind(1)-1);
+  end;
+  Fs = getVal(tekst_Fs, Inf, hA, ['sampling rate error: >>' tekst_Fs '<<']); 
+  % /added 2006.10.09
+  
+  n=0:L-1;
+  tekstX=get(hEditX,'UserData');  tekstX=tekstX(Ktory,:);
+  ind=find(tekstX==0);
+  if ~isempty(ind)
+    tekstX=tekstX(1:ind(1)-1);
+  end;
+%   eval(['x=' tekstX ';'], ['disp(''signal string error: >>' tekstX '<<''); x=zeros(1,L);']) 
+  % \Fixed 2005.11.02
+  err_ = 0;
+  eval(['x=' tekstX ';'], ['err_=1; x=zeros(1,L);']) 
+  if err_==1,
+    tmp_ = getVal('NaN', 0, hA, ['signal string error: >>' tekstX '<<']); 
+  end
+  % /Fixed 2005.11.02
+  
+  Re=get(h_real,'UserData');  Re=Re(Ktory,1);
+  
+  tekstNoise=get(hEditNoise,'UserData');  tekstNoise=tekstNoise(Ktory,:);
+  ind=find(tekstNoise==0);
+  if ~isempty(ind)
+    tekstNoise=tekstNoise(1:ind(1)-1);
+  end;
+%   eval(['Noise=' tekstNoise ';'], 'Noise=-300;') 
+  Noise = getVal(tekstNoise, -300, hA, 'Error in parameter Noise'); % \Fixed 2005.11.02
+
+  x=x(:);
+  if length(x)<L;
+    x(L)=0;
+  else
+    x=x(1:L);
+  end;
+  
+  N_lin=10.^(Noise/20);
+  if Re==1
+    x=real(x)+N_lin*randn(size(x));
+  else
+    x=x+(N_lin*randn(size(x))+N_lin*j*randn(size(x)))/sqrt(2);
+  end;
+  max_x(Ktory)=max(abs([real(x); imag(x)]));
+   
+  %draw signal
+  pom=get(h_rgb(1),'UserData');
+  kolor=pom(Ktory,:);
+
+  %real part of the signal
+  axes(ha(1));
+  if isnan(hp_re(Ktory))
+    hold on;
+    hp_re(Ktory)=plot(n,real(x), 'Color', kolor);
+    hold off;
+  else
+    set(hp_re(Ktory),'Xdata', n, 'Ydata', real(x), 'Color', kolor);
+  end
+  set(ha(1), 'Xlim', [-0.5, max(max_L)-0.5], 'Ylim', [-1.1 1.1]*max(max_x));  % \Fixed 2005.11.02
+  eval('rmappdata(get(ha(1),''Zlabel''),''ZOOMAxesData'')','set(get(ha(1),''ZLabel''),''UserData'',[])');
+%  eval('zoom reset', 'set(get(ha(1),''ZLabel''),''UserData'',[]);');    
+%  reset(get(ha(1),'ZLabel'));    
+  
+  %imaginary part of the signal
+  axes(ha(2));
+  if isnan(hp_im(Ktory))
+    hold on;
+    hp_im(Ktory)=plot(n,imag(x), 'Color', kolor);
+    hold off;
+  else
+    set(hp_im(Ktory),'Xdata', n, 'Ydata', imag(x), 'Color', kolor);
+  end
+  set(ha(2), 'Xlim', [-0.5, max(max_L)-0.5], 'Ylim', [-1.1 1.1]*max(max_x));  % \Fixed 2005.11.02
+%  set(get(ha(2),'ZLabel'),'UserData',[]);    
+%  reset(get(ha(2),'ZLabel'));    
+  eval('rmappdata(get(ha(2),''Zlabel''),''ZOOMAxesData'')','set(get(ha(2),''ZLabel''),''UserData'',[])');
+%  eval('zoom reset', 'set(get(ha(2),''ZLabel''),''UserData'',[]);');    
+  
+
+  set(hMenu,'UserData', [hp_re, hp_im, hp_per, max_x, min_per, max_per, max_L, psd_mean, psd_var]);  % \Fixed 2005.11.02
+  
+  set(fig, 'Pointer', 'arrow'); % \Fixed 2005.11.02
+
+  %compute and draw periodogram
+  PERgraf('per', Ktory)
+  return;
+  
+elseif strcmp(Akcja, 'per_type_change')
+  per_type = get(h_per_type, 'Value');
+  pom = get(h_per_type, 'UserData');
+  pom(Ktory,1)=per_type;
+  set(h_per_type,'UserData',pom);
+
+  UpdatePergraphGUI(per_type, fig);
+  %compute and draw periodogram
+  PERgraf('per', Ktory)
+  
+elseif strcmp(Akcja, 'per')
+  set(fig, 'Pointer', 'watch'); % \Fixed 2005.11.02
+  if nargin==2,
+    Ktory=param;
+  else
+    %save strings
+    tekst=[get(hEditK, 'String') 0];
+    pom=get(hEditK,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditK,'UserData', setstr(pom));
+    
+    tekst=[get(hEditM, 'String') 0];
+    pom=get(hEditM,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditM,'UserData', setstr(pom));
+    
+%    tekst=[get(hEditN, 'String') 0];
+%    pom=get(hEditN,'UserData');
+%    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+%       zeros(1, max([1; size(pom,2); length(tekst)]));
+%    pom(Ktory,1:length(tekst))=tekst;
+%    set(hEditN,'UserData', setstr(pom));
+    
+    tekst=[get(hEditO, 'String') 0];
+    pom=get(hEditO,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditO,'UserData', setstr(pom));
+    
+    tekst=[get(hEditW, 'String') 0];
+    pom=get(hEditW,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditW,'UserData', setstr(pom));
+    
+    tekst=get(h_det, 'Value');
+    pom=get(h_det,'UserData');
+    pom(Ktory,1)=tekst;
+    set(h_det,'UserData', pom);
+  end;
+
+  pom=get(hMenu,'UserData');
+  hp_re=pom(:,1);
+  hp_im=pom(:,2);
+  hp_per=pom(:,3);
+  max_x=pom(:,4);
+  min_per=pom(:,5);
+  max_per=pom(:,6);
+  max_L = pom(:,7);  % \Fixed 2005.11.02
+  psd_mean = pom(:,8); % \Fixed 2005.11.02
+  psd_var = pom(:,9); % \Fixed 2005.11.02
+ 
+  per_type = get(h_per_type,'UserData');  per_type=per_type(Ktory,1);
+  
+  %DFT length
+  tekstK=get(hEditK,'UserData');  tekstK=tekstK(Ktory,:);
+  ind=find(tekstK==0);
+  if ~isempty(ind)
+    tekstK=tekstK(1:ind(1)-1);
+  end;
+%   eval(['K=' tekstK ';'], 'K=16;')
+  K = getVal(tekstK, 16, hA, 'Error in parameter K'); % \Fixed 2005.11.02
+
+%%%%%%%%%%%%%%%%%%%%%
+% \fixed 2006.12.20
+%%%%%%%%%%%%%%%%%%%%%
+  % signal * BEGIN *
+  x=get(hp_re(Ktory), 'Ydata')+j*get(hp_im(Ktory), 'Ydata');
+  % signal * END *
+  
+  if (per_type == 1) | (per_type == 2)
+    M = length(x);
+    %if (length(x) ~= M)
+    %  tmp_ = getVal('NaN', 0, hA, ['signal length is different from periodograph segment length (L != M)']); 
+    %end
+    %if length(x) < M,
+    %  x(M) = 0;
+    %else
+    %  x = x(1:M);
+    %end;
+    
+    
+    if (M>K)
+      if supress_msgbox ==1,
+        warning('L cannot be larger than K');
+      else
+        uiwait(msgbox('L cannot be larger than K', 'modal'));
+      end
+      M=K;
+      x = x(1:M);
+    end;
+    
+  else
+  
+    tekstM=get(hEditM,'UserData');  tekstM=tekstM(Ktory,:);
+    ind=find(tekstM==0);
+    if ~isempty(ind)
+      tekstM=tekstM(1:ind(1)-1);
+    end;
+  %   eval(['M=' tekstM ';'], 'M=16;') 
+    M = round(getVal(tekstM, 16, hA, 'Error in parameter M')); % \Fixed 2005.11.02
+    if M < 1,
+      M = 1;
+    end
+    
+    if (M>K)
+      if supress_msgbox ==1,
+        warning('M cannot be larger than K');
+      else
+        uiwait(msgbox('M cannot be larger than K', 'modal'));
+      end
+      M=K;
+    end;
+  end
+%%%%%%%%%%%%%%%%%%%%%
+% /fixed 2006.12.20
+%%%%%%%%%%%%%%%%%%%%%
+
+%  tekstN=get(hEditN,'UserData');  tekstN=tekstN(Ktory,:);
+%  ind=find(tekstN==0);
+%  if ~isempty(ind)
+%    tekstN=tekstN(1:ind(1)-1);
+%  end;
+%  eval(['N=' tekstN ';'], 'N=16;')
+
+  if per_type == 4,
+    tekstO=get(hEditO,'UserData');  tekstO=tekstO(Ktory,:);
+    ind=find(tekstO==0);
+    if ~isempty(ind)
+      tekstO=tekstO(1:ind(1)-1);
+    end;
+  %   eval(['O=' tekstO ';'], 'O=0;') 
+    O = getVal(tekstO, 0, hA, 'Error in parameter O'); % \Fixed 2005.11.02
+    O = round(O/100*M); % \Fixed 2005.11.02 nakładkowanie podawane w procentach !!! 
+  else
+    O = 0; % no overlapping
+  end
+  
+  if per_type ~= 1,
+    tekstW=get(hEditW,'UserData');  tekstW=tekstW(Ktory,:);
+    ind=find(tekstW==0);
+    if ~isempty(ind)
+      tekstW=tekstW(1:ind(1)-1);
+    end;
+
+    % \Fixed 2005.11.02
+    A = get(hA.A_edit, 'UserData');
+    A = A.A;
+
+    err_ = 0;
+    eval(['w=' tekstW ';'], 'err_=1; w=ones(1,M);')
+    if err_==1,
+      tmp_ = getVal('NaN', 0, hA, ['window string error: >>' tekstW '<<']); 
+    end
+    % /Fixed 2005.11.02
+  else
+    w = ones(1,M);
+  end
+
+  w=w(:);
+  if length(w)<M;
+    w(M)=0;
+  else
+    w=w(1:M);
+  end;
+  
+  N = fix((length(x)-O)/(M-O)); 
+  set(hEditN, 'String', sprintf('%i', N));
+
+  det_=get(h_det,'UserData');  det_=det_(Ktory,1);
+  if det_==0,
+    det_='none';
+  else
+    det_='linear';
+  end;
+  
+  Fs = get(h_Fs, 'UserData'); Fs = Fs(Ktory, :);
+  Fs = getVal(Fs, Inf, hA, 'Error in parameter Fs');
+  if ~isfinite(Fs),
+    Fs = 1;
+  end
+  %[Per, f]=psd(x, K, Fs, w, O, det_);
+
+  if strcmp(det_, 'none') ~= 1,
+    w_tmp = w(:);
+    N_tmp = length(x);    % Number of data points
+    N_wind = length(w);            % length of window
+    % zero-pad x if it has length less than the window length:
+    if N_tmp < N_wind            
+      x(N_wind)=0;  
+      N_tmp = N_wind;
+    end
+    % Number of windows (k = fix(n/nwind) for noverlap=0):
+    k_tmp = fix((N_tmp-O)/(N_wind-O));
+    % Zero-pad to allow x to have equal number of elements as k window elements.
+    if N_tmp < N_wind*k_tmp,
+        x(N_wind*k_tmp)=0;
+    end
+    xr_tmp=reshape(x,N_wind,k_tmp) % Resizes X column-wise to nwind
+    xr_tmp=detrend(xr_tmp);    % DETRENDS each column, aka segment
+    x=reshape(xr_tmp,length(x),1) % Makes x back into a column vector
+  end
+  % Korekta 2018.03.02
+  if length(x) < length(w)
+      x(length(w)) = 0;
+      if supress_msgbox ==1,
+        warning('L should not be smaller than M');
+      else
+        uiwait(msgbox('L should not be smaller than M', 'modal'));
+      end
+  end
+  [Per, f]=pwelch(x, w, O, K, Fs);
+
+  Re=get(h_real,'UserData'); 
+  if ~Re(Ktory,1)
+    f=fftshift(f);
+    f(1:floor(K/2))=f(1:floor(K/2))-Fs;  % \fixed 2006.10.10
+    Per=fftshift(Per);
+  else
+    f=[-f(length(f):-1:1); f];
+    Per=[Per(length(Per):-1:1); Per];
+  end
+  psd_mean(Ktory)=mean(Per);
+  psd_var(Ktory)=std(Per).^2;
+  set(hParam,'string',sprintf('mean=%f\r\nvar =%f',psd_mean(Ktory),psd_var(Ktory)));
+  
+  min_per(Ktory)=min([Per(isfinite(Per)); 0]);
+  max_per(Ktory)=max([Per(isfinite(Per)); 0.001]);
+  if get(h_dB, 'UserData') %dB
+    Per=10*log10(Per);
+  end
+  
+  %draw signal
+  pom=get(h_rgb(1),'UserData');
+  kolor=pom(Ktory,:);
+  set(hParam, 'ForegroundColor', kolor); % \Fixed 2005.11.02
+
+  %periodogram
+  axes(ha(3));
+  if isnan(hp_per(Ktory))
+    hold on;
+    hp_per(Ktory)=plot(f,Per, 'Color', kolor);
+    hold off;
+  else
+    set(hp_per(Ktory),'Xdata', f, 'Ydata', Per, 'Color', kolor);
+  end
+  max_Fs = getMaxFs(h_Fs, hA);
+  if all(Re)
+    set(ha(3), 'Xlim', [0 max_Fs/2]);
+  else
+    set(ha(3), 'Xlim', [-max_Fs/2 max_Fs/2]);
+  end
+%  set(get(ha(3),'ZLabel'),'UserData',[]);    
+%  reset(get(ha(3),'ZLabel'));    
+  eval('rmappdata(get(ha(3),''Zlabel''),''ZOOMAxesData'')','set(get(ha(3),''ZLabel''),''UserData'',[])');
+%  eval('zoom reset', 'set(get(ha(3),''ZLabel''),''UserData'',[]);');    
+  
+  set(hMenu,'UserData', [hp_re, hp_im, hp_per, max_x, min_per, max_per, max_L, psd_mean, psd_var]);  % \Fixed 2005.11.02
+
+  PERgraf('per_ylim');
+  zoom on;
+  set(fig, 'Pointer', 'arrow'); % \Fixed 2005.11.02
+  return;
+  
+elseif strcmp(Akcja, 'Color')
+  pom=get(h_rgb(1),'UserData');
+  for ind=1:3,
+    pom(Ktory,ind)=get(h_rgb(ind),'Value')*0.75;
+  end;
+  set(h_rgb(1),'UserData', pom);
+    
+  pom2=get(hMenu,'UserData');
+  hp_re=pom2(:,1);
+  hp_im=pom2(:,2);
+  hp_per=pom2(:,3);
+
+  %PERgraf('redraw', Ktory); %w zasadzie tutaj tylko zmiana koloru bez przeliczania
+  set([hp_re(Ktory), hp_im(Ktory), hp_per(Ktory)], 'Color', pom(Ktory,:));
+  set(hParam, 'ForegroundColor', pom(Ktory,:)); % \Fixed 2005.11.02
+  return;
+  
+elseif strcmp(Akcja, 'lock')
+  lock = get(h_lock, 'Value');
+  if (lock == 1)
+    pom = [get(ha(3), 'Xlim'), get(ha(3), 'Ylim')];
+    set(h_lock, 'UserData', pom);
+  end
+  PERgraf('per_ylim');
+  
+elseif strcmp(Akcja, 'dB')
+  pom=get(h_dB, 'UserData');
+    if pom~=get(h_dB, 'Value')
+    pom=get(hMenu,'UserData');
+    hp_per=pom(:,3);
+    for ind=1:length(hp_per)
+      sygn=get(hp_per(ind),'Ydata');
+      if get(h_dB, 'Value') %dB
+        sygn=10*log10(sygn);
+      else %lin
+        sygn=10.^(sygn/10);
+      end;
+      set(hp_per(ind),'Ydata', sygn);
+    end;
+    set(h_dB, 'UserData', get(h_dB, 'Value'));
+    
+    lock = get(h_lock, 'Value');
+    if (lock == 1)
+      pom= get(h_lock, 'UserData');
+      if get(h_dB, 'Value') %dB
+        pom(3:4) = 10*log10(pom(3:4));
+        if ~isfinite(pom(3)),
+          pom(3) = -300;
+        end
+      else %lin
+        pom(3:4) = 10.^(pom(3:4)/10);
+      end;
+      set(h_lock, 'UserData', pom);
+    end
+  end
+  PERgraf('per_ylim');
+  return
+  
+elseif strcmp(Akcja, 'per_ylim')
+  lock = get(h_lock, 'Value');
+  if (lock == 1)
+    pom= get(h_lock, 'UserData');
+    if length(pom) ~= 4,
+      set(h_lock, 'Value', 0);
+      PERgraf('lock');
+      return;
+    end
+    set(ha(3), 'Xlim', pom(1:2));
+    set(ha(3), 'Ylim', pom(3:4));
+  else
+    pom=get(hMenu,'UserData');
+    min_per=pom(:,5);
+    max_per=pom(:,6);
+    if get(h_dB, 'UserData') %dB
+      ylim_=[min(min_per) max(max_per)*1.1];
+      if isfinite(ylim_(2))
+        ylim_(2)=2.^ceil(log2(ylim_(2)));
+      else
+        ylim_(2)=0;
+      end
+      warning off;
+      ylim_=10*log10(ylim_);
+      warning on;
+      tekst=get(hEdit_dY,'String');
+      eval(['dY=' tekst ';'], 'dY=120;'); 
+      if dY<=0, dY=10; end;
+      if isfinite(ylim_(1))
+        ylim_(1)=2.^floor(log2(ylim_(1)));
+      else
+        ylim_(1)=ylim_(2)-dY;
+      end
+      if ylim_(2)-ylim_(1)>dY,
+        ylim_(1)=ylim_(2)-dY;
+      end
+      set(ha(3), 'Ylim', ylim_);
+    else
+      ylim_=2.^ceil(log2(max(max_per)));
+      set(ha(3), 'Ylim', [0 ylim_]);
+    end
+    
+    Re=get(h_real,'UserData'); 
+    max_Fs = getMaxFs(h_Fs, hA);
+    if all(Re)
+      set(ha(3), 'Xlim', [0 max_Fs/2]);
+    else
+      set(ha(3), 'Xlim', [-max_Fs/2 max_Fs/2]);
+    end
+  end
+  pause(0);
+  % eval('zoom reset', 'set(get(ha(3),''ZLabel''),''UserData'',[]);');
+  eval('rmappdata(get(ha(3),''Zlabel''),''ZOOMAxesData'')','set(get(ha(3),''ZLabel''),''UserData'',[])');
+  % zoom on;
+  return
+  
+elseif strcmp(Akcja, 'actionA')
+  redraw_ = 0;
+  A = get(hA.A_edit, 'UserData');
+  if strcmp(param, 'A_edit')
+    %   - "A_edit"
+    A_ = eval(get(hA.A_edit, 'String'), 'NaN');
+    if ~isfinite(A_),
+      set(hA.A_edit, 'String', A.A);
+    else
+      A.A = A_;
+      if A.A < A.min;
+        A.A = A.min;
+        set(hA.A_edit, 'String', A.A);
+      end
+      if A.A > A.max;
+        A.A = A.max;
+        set(hA.A_edit, 'String', A.A);
+      end
+      set(hA.A_slider, 'Value', A.A);
+      redraw_ = 1;
+    end
+
+  elseif strcmp(param, 'dA_edit')
+    %   - "dA_edit"
+    dA_ = eval(get(hA.dA_edit, 'String'), 'NaN');
+    if ~isfinite(dA_),
+      set(hA.dA_edit, 'String', A.dA);
+    else
+      A.dA = dA_;
+    end
+    
+  elseif strcmp(param, 'A_slider')
+    %   - "A_slider"
+    A_ = get(hA.A_slider, 'Value');
+    znak = sign(A_ - A.A);
+    if A.is_plus == 1,
+      A_ = A.A + znak*A.dA;        
+    else % razy
+      if znak >= 0,
+        A_ = A.A*A.dA;        
+      else
+        A_ = A.A/A.dA;        
+      end
+    end
+
+    A.A = A_;
+    if A.A < A.min;
+      A.A = A.min;
+    end
+    if A.A > A.max;
+      A.A = A.max;
+    end
+    set(hA.A_edit, 'String', A.A);
+    set(hA.A_slider, 'Value', A.A);
+    redraw_ = 1;
+    
+  elseif strcmp(param, 'minA_edit')
+    %   - "minA_edit"
+    minA_ = eval(get(hA.minA_edit, 'String'), 'NaN');
+    if ~isfinite(minA_),
+      set(hA.minA_edit, 'String', A.min);
+    else
+      if minA_ > A.max;
+        minA_ = A.min;
+        set(hA.minA_edit, 'String', minA_);
+      end
+      
+      A.min = minA_;
+      set(hA.A_slider, 'min', minA_);
+      
+      if A.A < A.min;
+        A.A = A.min;
+        set(hA.A_edit, 'String', A.A);
+        set(hA.A_slider, 'Value', A.A);
+      end
+    end
+    
+  elseif strcmp(param, 'maxA_edit')
+    %   - "maxA_edit"
+    maxA_ = eval(get(hA.maxA_edit, 'String'), 'NaN');
+    if ~isfinite(maxA_),
+      set(hA.maxA_edit, 'String', A.max);
+    else
+      if maxA_ < A.min;
+        maxA_ = A.max;
+        set(hA.maxA_edit, 'String', maxA_);
+      end
+      
+      A.max = maxA_;
+      set(hA.A_slider, 'max', maxA_);
+      
+      if A.A > A.max;
+        A.A = A.max;
+        set(hA.A_edit, 'String', A.A);
+        set(hA.A_slider, 'Value', A.A);
+      end
+    end
+    
+  elseif strcmp(param, 'A_razy_radio')
+    %   - "A_razy_radio"
+%     val =  get(A_plus_radio, 'Value');
+%     if val > 0.0,
+%       A.is_plus = 1;
+%     else
+      A.is_plus = 0;
+%     end
+%     if A.is_plus == 1,
+%       set(hA.A_plus_radio, 'Value', 1.0);
+%       set(hA.A_razy_radio, 'Value', 0.0);
+%     else
+      set(hA.A_plus_radio, 'Value', 0.0);
+      set(hA.A_razy_radio, 'Value', 1.0);
+%     end
+    
+  elseif strcmp(param, 'A_plus_radio')
+    %   - "A_plus_radio"
+%     val =  get(A_razy_radio, 'Value');
+%     if val > 0.0,
+%       A.is_plus = 0;
+%     else
+      A.is_plus = 1;
+%     end
+%     if A.is_plus == 1,
+      set(hA.A_plus_radio, 'Value', 1.0);
+      set(hA.A_razy_radio, 'Value', 0.0);
+%     else
+%       set(hA.A_plus_radio, 'Value', 0.0);
+%       set(hA.A_razy_radio, 'Value', 1.0);
+%     end
+    
+  end
+  
+  set(hA.A_edit, 'UserData', A);
+  supress_msgbox = 1;
+  if redraw_ == 1,
+    Ktory=get(hMenu,'Value');  
+    pom=get(hMenu,'UserData');
+    ile=size(pom,1);
+    for ind=1:ile,
+      if ind ~= Ktory,
+        eval(sprintf('pergraf(''signal'', %i);', ind), 'set(fig, ''Pointer'', ''arrow'');');
+      end
+    end
+    eval(sprintf('pergraf(''signal'', %i);', Ktory), 'set(fig, ''Pointer'', ''arrow'');');
+  end
+  supress_msgbox = 0;
+  
+end;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function x = getVal(tekst, def_val, hA, msg, Fs)
+
+global supress_msgbox
+
+if nargin == 4,
+  Fs = Inf;
+end
+
+A = get(hA.A_edit, 'UserData');
+A = A.A;
+
+x = eval(tekst, 'NaN');
+if isnan(x),
+  x=def_val;
+  if supress_msgbox ==1,
+    warning(msg);
+  else
+    uiwait(msgbox(msg, 'modal'));
+  end
+end
+
+function UpdatePergraphGUI(per_type, fig)
+
+hEditM=findobj(fig,'tag', 'M_edit');
+hLabelM=findobj(fig,'tag', 'M_label');
+hEditN=findobj(fig,'tag', 'N_edit');
+hLabelN=findobj(fig,'tag', 'N_label');
+hEditO=findobj(fig,'tag', 'O_edit');
+hLabelO=findobj(fig,'tag', 'O_label');
+hUnitO=findobj(fig,'tag', 'O_unit');
+hEditW=findobj(fig,'tag', 'w_edit');
+hLabelW=findobj(fig,'tag', 'w_label');
+
+switch (per_type)
+  case 1, % raw periodograph
+    set(hEditM, 'Visible', 'off');
+    set(hLabelM, 'Visible', 'off');
+    set(hEditN, 'Visible', 'off');
+    set(hLabelN, 'Visible', 'off');
+    set(hEditO, 'Visible', 'off');
+    set(hLabelO, 'Visible', 'off');
+    set(hUnitO, 'Visible', 'off');
+    set(hEditW, 'Visible', 'off');
+    set(hLabelW, 'Visible', 'off');
+  case 2, % modified periodograph
+    set(hEditM, 'Visible', 'off');
+    set(hLabelM, 'Visible', 'off');
+    set(hEditN, 'Visible', 'off');
+    set(hLabelN, 'Visible', 'off');
+    set(hEditO, 'Visible', 'off');
+    set(hLabelO, 'Visible', 'off');
+    set(hUnitO, 'Visible', 'off');
+    set(hEditW, 'Visible', 'on');
+    set(hLabelW, 'Visible', 'on');
+  case 3, % Bartlett periodograph
+    set(hEditM, 'Visible', 'on');
+    set(hLabelM, 'Visible', 'on');
+    set(hEditN, 'Visible', 'on');
+    set(hLabelN, 'Visible', 'on');
+    set(hEditO, 'Visible', 'off');
+    set(hLabelO, 'Visible', 'off');
+    set(hUnitO, 'Visible', 'off');
+    set(hEditW, 'Visible', 'on');
+    set(hLabelW, 'Visible', 'on');
+  case 4, % Welch periodograph
+    set(hEditM, 'Visible', 'on');
+    set(hLabelM, 'Visible', 'on');
+    set(hEditN, 'Visible', 'on');
+    set(hLabelN, 'Visible', 'on');
+    set(hEditO, 'Visible', 'on');
+    set(hLabelO, 'Visible', 'on');
+    set(hUnitO, 'Visible', 'on');
+    set(hEditW, 'Visible', 'on');
+    set(hLabelW, 'Visible', 'on');
+  otherwise,
+    disp('Unsupported periodograph type');
+end;
+
+function maxFs = getMaxFs(h_Fs, hA)
+
+maxFs = 0;
+pom = get(h_Fs, 'UserData');
+for ind=1:size(pom, 1);
+  tekst_Fs = pom(ind, :);
+  ind=find(tekst_Fs==0);
+  if ~isempty(ind)
+    tekst_Fs = tekst_Fs(1:ind(1)-1);
+  end;
+  Fs = getVal(tekst_Fs, Inf, hA, ['sampling rate error: >>' tekst_Fs '<<']); 
+  if ~isfinite(Fs),
+    Fs = 1;
+  end;
+  maxFs = max([maxFs, Fs]);
+end;
+
+function [x, Fs] = readaudiofile(filename, param)
+% [x, Fs] = readaudiofile(filename, param)
+%
+% returns vector x of the size SIZE=[samples channels].
+%  eg. x = x(:,1) + j*x(:,2);
+%
+% special uses:
+%  param == 'size': returns SIZE in x
+%  param == 'cplx': for stereo files returns x as a complex vector instead of matrix 
+%
+%  supported file types:
+%    *.flt
+%    *.wav
+%    *.tape
+% last modification: 2021.03.29
+% Author: Marek Blok
+
+return_cplx = 0;
+if nargin == 1,
+  param = inf;
+else
+  if strcmp(param, 'cplx') == 1,
+    return_cplx = 1;
+    param = inf;
+  end
+end
+
+ind = find(filename == '.');
+if length(ind) == 0,
+  file_type = 'w'; % *.wav
+else
+  ind = ind(end);
+  
+  temp = filename(ind+1:end);
+  
+  file_type = 'u'; % unknown format
+  if strcmp(temp, 'flt') == 1,
+    file_type = 'f'; % two channel floting point
+  elseif strcmp(temp, 'wav') == 1,
+    file_type = 'w'; % *.wav
+  elseif strcmp(temp, 'tape') == 1,
+    file_type = 't'; % *.tape
+  end
+end
+
+switch file_type,
+  case 'w',
+    if strcmp(param, 'size') == 1,
+      if exist('audioread','file') == 0
+        x = wavread(filename, 'size');
+        %  siz = [samples channels].
+      else
+        info = audioinfo(filename);
+        x = [info.TotalSamples, info.NumChannels];
+        Fs = info.SampleRate;
+      end      
+    else
+      if isfinite(param)
+        if exist('audioread','file') == 0
+          [x, Fs] = wavread(filename, param);
+        else
+          if length(param) == 1
+            param = [1, param];
+          end
+          [x, Fs] = audioread(filename, param);
+        end
+      else
+        if exist('audioread','file') == 0
+          [x, Fs] = wavread(filename);
+        else
+          [x, Fs] = audioread(filename);
+        end
+      end
+    end
+    
+  case 't'
+    plik = fopen(filename, 'rb');
+    if plik == -1,
+      error('File does not exist !!!');
+    end
+    
+    header.size = fread(plik, 1, 'uint32', 0) + 4;
+
+    header.fname      = char(fread(plik, 256, 'char', 0).');
+    header.cfg_fname  = char(fread(plik, 256, 'char', 0).');
+    header.sw_rev     = fread(plik, 1, 'uint32', 0);
+    header.hw_rev     = fread(plik, 1, 'uint32', 0);
+    header.file_      = fread(plik, 1, 'uint32', 0);
+    header.tape_type  = fread(plik, 1, 'uint32', 0);
+    header.start_time = fread(plik, 1, 'int32', 0); % time_t
+    header.end_time   = fread(plik, 1, 'int32', 0); % time_t
+    
+    header.total_samples  = fread(plik, 1, 'uint32', 0); 
+    file_length = header.total_samples * 4  + header.size
+    header.current_sample = fread(plik, 1, 'uint32', 0); 
+    header.loop_start     = fread(plik, 1, 'int64', 0); 
+    header.loop_end       = fread(plik, 1, 'int64', 0); 
+    header.loop           = fread(plik, 1, 'int32', 0); 
+    header.group_size_32  = fread(plik, 1, 'uint32', 0); 
+    header.block_size     = fread(plik, 1, 'uint32', 0); 
+    header.block_count    = fread(plik, 1, 'uint32', 0); 
+    header.fifo_size      = fread(plik, 1, 'uint32', 0); 
+
+
+    header.comment      = char(fread(plik, 256, 'char', 0).');
+    header.tmp  = char(fread(plik, 20, 'char', 0).'); % time_t
+    header.status       = fread(plik, 1, 'uint32', 0); 
+    header.timestamps   = fread(plik, 1, 'int32', 0); 
+    header.freq         = fread(plik, 1, 'float', 0); 
+    header.cplx_datarate = fread(plik, 1, 'float', 0); 
+    
+%     ftell(plik)
+    header.reserved = fread(plik, 128, 'uint32', 0);
+%     header.reserved.'
+    
+%    header
+    ftell(plik)
+
+    header.sample_type = 2;
+    header.ch_no = 2;
+    header.Fs = NaN;
+    
+    sample_type = 'int16';
+    sample_size = 2;
+
+    header_size = header.size;
+    if strcmp(param, 'size') == 1,
+      fseek(plik, 0, 'eof');
+      size = (ftell(plik) - header_size) / sample_size / header.ch_no; % sizeof(float) *2
+      x = size;
+    else
+      fseek(plik, header_size, 'bof');
+      
+      len = param(1);
+      if length(param) > 1,
+        fseek(plik, sample_size*header.ch_no*(param(1)-1), 'cof');
+        len = param(2) - param(1) + 1;
+      end
+        
+%       x = fread(plik, [header.ch_no, len], sample_type);
+      x = fread(plik, [header.ch_no, len], sample_type, 0);
+      x = x.';
+    end
+    fclose(plik);
+    
+  case 'f'
+    plik = fopen(filename, 'rb');
+    if plik == -1,
+      error('File does not exist !!!');
+    end
+    
+    % 3 B - wersja pliku (w tym typ próbek)
+    % 1 B - liczba kanałów
+    % 4 B - szybkoœć próbkowania
+    header_size = 8;
+    header.ver = fread(plik, 1, 'uint8');
+    header.sample_type = fread(plik, 1, 'uint16');
+    header.ch_no = fread(plik, 1, 'uint8');
+    header.Fs = fread(plik, 1, 'uint32');
+    
+    Fs = header.Fs;
+    
+    switch (header.ver),
+      case 0,
+        switch (header.sample_type),
+          case 0,
+            sample_type = 'float';
+            sample_size = 4;
+          case 1,
+            sample_type = 'uchar';
+            sample_size = 1;
+          case 2,
+            sample_type = 'short';
+            sample_size = 2;
+          case 3,
+            sample_type = 'int';
+            sample_size = 4;
+          otherwise
+            error('Unsupported *.flt sample type !!!');
+        end
+      otherwise
+        error('Unsupported *.flt file version !!!');
+    end
+        
+    
+    if strcmp(param, 'size') == 1,
+      fseek(plik, 0, 'eof');
+      size = (ftell(plik) - header_size) / sample_size / header.ch_no; % sizeof(float) *2
+      x = size;
+    else
+      len = param(1);
+      status = 0;
+      if length(param) > 1,
+        status = fseek(plik, sample_size*header.ch_no*(param(1)-1), 'cof');
+        len = param(2) - param(1) + 1;
+      end
+        
+      if (status == -1)
+        x = [];
+      else
+        x = fread(plik, [header.ch_no, len], sample_type);
+        x = x.';
+      end
+    end
+    
+    fclose(plik);
+  otherwise
+    error('Unsupported file format !!!');
+end
+
+if return_cplx == 1,
+  if length(x(1,:)) == 2,
+    x = x(:,1) + j*x(:,2);
+  end
+end
+
+function UpdateFigTitle
+fig=findobj(0, 'tag', 'perGUI');
+set(fig,'NumberTitle', 'off', 'Name',['Periodogram based power spectral desity estimators ver. 1.4.1 (Marek.Blok@pg.edu.pl 2021.04.09) ', pwd]);
+
+
diff --git a/Ex2/matlab/SPECgraf.m b/Ex2/matlab/SPECgraf.m
new file mode 100644
index 0000000..d892ec7
--- /dev/null
+++ b/Ex2/matlab/SPECgraf.m
@@ -0,0 +1,1436 @@
+function varargout = SPECgraf(Akcja, param)
+%cos(cumsum(n/1000))
+
+% \fixed 2017.03.22 psd ==> pwelch
+% \fixed 2012.03.05 finite ==> isfinite
+% \fixed 2006.10.11 dealt with LineStyle/Marker warning
+% \fixed 2005.11.20 dealt with "Warning: Log of zero." in ylim evaluation
+% \fixed 2005.11.20 Placed all in single file
+% \fixed 2005.11.20 Fixed problems with zoom out
+
+if nargin == 0  % LAUNCH GUI
+
+% 	fig = openfig(mfilename,'reuse'); return; %ZapiszFig(1,'specGUI.m')
+  if isempty(findobj(0, 'tag', 'Specgraf_DrawFig')) 
+    
+    fig = Specgraf_DrawFig;
+    set(fig,'tag', 'Specgraf_DrawFig', 'Units', 'pixels');
+    set(fig,'name', 'Spektrogram sygnałów niestacjonarnych (2017.03.22) dr inż. Marek Blok)',...
+      'KeyPressFcn','1;');
+    
+    SPECgraf('Init');
+    SPECgraf('signal');
+    set(fig,'Visible','on');
+%    SPECgraf('per');
+  else
+    SPECgraf('Exit');
+  end
+  return;
+end;
+
+if ~isstr(Akcja) % INVOKE NAMED SUBFUNCTION OR CALLBACK
+  disp('Something''s wrong');
+  return;
+end;
+
+% Generate a structure of handles to pass to callbacks, and store it. 
+fig=findobj(0, 'tag', 'Specgraf_DrawFig');
+hEditN=findobj(fig,'tag', 'N_edit');
+hEditM=findobj(fig,'tag', 'M_edit');
+hEditL=findobj(fig,'tag', 'L_edit');
+hEditK=findobj(fig,'tag', 'K_edit');
+hEditO=findobj(fig,'tag', 'O_edit');
+hEditW=findobj(fig,'tag', 'w_edit');
+hEditX=findobj(fig,'tag', 'x_edit');
+h_real=findobj(fig,'tag', 'real_checkbox');
+h_dB=findobj(fig,'tag', 'dB_checkbox');
+hEditNoise=findobj(fig,'tag', 'Noise_edit');
+hEditName=findobj(fig,'tag', 'Name_edit');
+hMenu=findobj(fig,'tag', 'choose_popupmenu');
+h_det=findobj(fig,'tag', 'detrend_checkbox');
+ha=get(fig, 'UserData');
+Ktory=get(hMenu,'Value');  
+hEdit_dY=findobj(fig,'tag', 'dY_edit');
+
+if strcmp(Akcja, 'Exit')
+  close(fig);
+  return;
+elseif strcmp(Akcja, 'Init')
+  set(hEditX,'UserData','randn(1,L)');
+  set(hEditX,'String','randn(1,L)');
+  set(hEditX,'Max', 2);
+
+  set(hEditW,'UserData','boxcar(M)');
+  set(hEditW,'String','boxcar(M)');
+
+  set(hEditL,'UserData','1000');
+  set(hEditL,'String','1000');
+  set(hEditM,'UserData','100');
+  set(hEditM,'String','100');
+  set(hEditNoise,'UserData','-100');
+  set(hEditNoise,'String','-100');
+  
+%  set(hEditN,'UserData','1');
+%  set(hEditN,'String','1');
+  set(hEditO,'UserData','0');
+  set(hEditO,'String','0');
+
+  set(hEditK,'UserData','256');
+  set(hEditK,'String','256');
+
+  set(hEditName,'String','new');
+  set(hMenu,'String','new');
+
+  set(h_real,'UserData',1);
+  set(h_real,'Value',1);
+
+  set(h_dB,'UserData',0);
+  set(h_dB,'Value',0);
+  
+  set(h_det,'UserData',1);
+  set(h_det,'Value',1);
+  
+  ha(1)=findobj(fig,'tag', 'Signal_re_axes');
+  ha(2)=findobj(fig,'tag', 'Signal_im_axes');
+  ha(3)=findobj(fig,'tag', 'spec_axes');
+  ha(4)=findobj(fig,'tag', 'per_axes');
+%  for ind=[1 2 4], axes(ha(ind)); zoom on; end;
+%  axes(ha(3)); zoom off;
+  
+  set(fig, 'UserData', ha);
+
+  set(hMenu,'UserData', [NaN, NaN, NaN, NaN, NaN, NaN, NaN, 1, -100, 5, -100, 5]); %handles & maximal values
+  set(hEdit_dY,'String','120');
+  return;
+elseif strcmp(Akcja, 'change_name')
+  pom=get(hMenu,'String');
+  pom2=get(hEditName,'String');
+  pom(Ktory,1:length(pom2)+1)=[pom2 0];
+  set(hMenu,'String',pom);
+  set(hMenu, 'Value', Ktory);
+  return;  
+elseif strcmp(Akcja, 'new')
+  pom=get(hMenu,'String');
+  Ktory=size(pom,1)+1;
+  pom(Ktory,1:4)=['new' 0];
+  set(hMenu,'String',pom);
+  
+  
+  pom=get(hEditX,'UserData');
+  pom(Ktory,1:11)=['randn(1,L)' 0];
+  set(hEditX,'UserData',pom);
+  pom=get(hEditW,'UserData');
+  pom(Ktory,1:10)=['boxcar(M)' 0];
+  set(hEditW,'UserData',pom);
+
+  pom=get(hEditL,'UserData');
+  pom(Ktory,1:4)=['100' 0];
+  set(hEditL,'UserData',pom);
+  pom=get(hEditM,'UserData');
+  pom(Ktory,1:4)=['100' 0];
+  set(hEditM,'UserData',pom);
+  pom=get(hEditNoise,'UserData');
+  pom(Ktory,1:5)=['-100' 0];
+  set(hEditNoise,'UserData',pom);
+  
+%  pom=get(hEditN,'UserData');
+%  pom(Ktory,1:2)=['1' 0];
+%  set(hEditN,'UserData',pom);
+  pom=get(hEditO,'UserData');
+  pom(Ktory,1:2)=['0' 0];
+  set(hEditO,'UserData',pom);
+
+  pom=get(hEditK,'UserData');
+  pom(Ktory,1:5)=['256' 0];
+  set(hEditK,'UserData',pom);
+
+  pom=get(hMenu,'UserData');
+  pom(Ktory,1:size(pom,2))=ones(1,size(pom,2))*NaN;
+  set(hMenu,'UserData',pom);
+
+  pom=get(h_real,'UserData');
+  pom(Ktory,1)=1;
+  set(h_real,'Value', pom(Ktory,1));
+  set(h_real,'UserData',pom);
+
+  pom=get(h_det,'UserData');
+  pom(Ktory,1)=1;
+  set(h_det,'Value', pom(Ktory,1));
+  set(h_det,'UserData',pom);
+
+  set(hMenu,'Value', Ktory);
+  
+  SPECgraf('Choose');
+  SPECgraf('signal', Ktory);
+  return;
+elseif strcmp(Akcja, 'delete')
+  pom=get(hMenu,'String');
+  if size(pom,1)==1,
+    %SPECgraf('Reset');
+    return;
+  end;
+  pom(Ktory,:)=[];
+  set(hMenu,'String',pom);
+
+  
+  pom=get(hEditX,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditX,'UserData',pom);
+  pom=get(hEditW,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditW,'UserData',pom);
+
+  pom=get(hEditL,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditL,'UserData',pom);
+  pom=get(hEditM,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditM,'UserData',pom);
+  pom=get(hEditNoise,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditNoise,'UserData',pom);
+  
+%  pom=get(hEditN,'UserData');
+%  pom(Ktory,:)=[];
+%  set(hEditN,'UserData',pom);
+  pom=get(hEditO,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditO,'UserData',pom);
+
+  pom=get(hEditK,'UserData');
+  pom(Ktory,:)=[];
+  set(hEditK,'UserData',pom);
+
+  pom=get(hMenu,'UserData');
+  for ind=1:3,
+    if isfinite(pom(Ktory,ind))
+      delete(pom(Ktory,ind));
+    end
+  end
+  pom(Ktory,:)=[];
+  set(hMenu,'UserData',pom);
+
+  pom=get(h_real,'UserData');
+  pom(Ktory,:)=[];
+  set(h_real,'UserData',pom);
+  
+  pom=get(h_det,'UserData');
+  pom(Ktory,:)=[];
+  set(h_det,'UserData',pom);
+  
+  set(hMenu,'Value', 1);
+  
+%  SPECgraf('signal', Ktory);
+  SPECgraf('Choose');
+  return;
+  
+  
+elseif strcmp(Akcja, 'Choose')
+  %selected new filter response
+  pom=get(hMenu,'String');
+  ind=find(pom(Ktory,:)==0);
+  if isempty(ind)
+    ind=size(pom,2);
+  else
+    ind=ind(1)-1;
+  end
+  set(hEditName,'String',pom(Ktory,1:ind));
+
+  pom=get(hEditX,'UserData');
+  set(hEditX, 'String', pom(Ktory,:));
+  pom=get(hEditW,'UserData');
+  set(hEditW, 'String', pom(Ktory,:));
+
+  pom=get(hEditL,'UserData');
+  set(hEditL, 'String', pom(Ktory,:));
+  pom=get(hEditM,'UserData');
+  set(hEditM, 'String', pom(Ktory,:));
+  pom=get(hEditNoise,'UserData');
+  set(hEditNoise, 'String', pom(Ktory,:));
+  
+%  pom=get(hEditN,'UserData');
+%  set(hEditN, 'String', pom(Ktory,:));
+  pom=get(hEditO,'UserData');
+  set(hEditO, 'String', pom(Ktory,:));
+
+  pom=get(hEditK,'UserData');
+  set(hEditK, 'String', pom(Ktory,:));
+
+  pom=get(h_real,'UserData');
+  set(h_real,'Value', pom(Ktory,1));
+
+  pom=get(h_det,'UserData');
+  set(h_det,'Value', pom(Ktory,1));
+
+%  SPECgraf('signal', Ktory);
+  return;
+  
+elseif strcmp(Akcja, 'signal')
+  if nargin==2,
+    Ktory=param;
+  else
+    %save strings
+    tekst=[get(hEditL, 'String') 0];
+    pom=get(hEditL,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditL,'UserData', setstr(pom));
+    
+    tekst=[get(hEditNoise, 'String') 0];
+    pom=get(hEditNoise,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditNoise,'UserData', setstr(pom));
+    
+    tekst=get(hEditX, 'String').';
+    tekst=[tekst(:); 0].';
+    pom=get(hEditX,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditX,'UserData', setstr(pom));
+    
+    tekst=get(h_real, 'Value');
+    pom=get(h_real,'UserData');
+    pom(Ktory,1)=tekst;
+    set(h_real,'UserData', pom);
+  end;
+
+  pom=get(hMenu,'UserData');
+  hp_re=pom(:,1);
+  hp_im=pom(:,2);
+  hp_spec_t=pom(:,3);
+  hp_spec_t2=pom(:,4);
+  hp_spec=pom(:,5);
+  hp_per=pom(:,6);
+  hp_per2=pom(:,7);
+  max_x=pom(:,8);
+  min_spec=pom(:,9);
+  max_spec=pom(:,10);
+  min_per=pom(:,11);
+  max_per=pom(:,12);
+  
+  %generate signal
+  tekstL=get(hEditL,'UserData');  tekstL=tekstL(Ktory,:);
+  ind=find(tekstL==0);
+  if ~isempty(ind)
+    tekstL=tekstL(1:ind(1)-1);
+  end;
+  eval(['L=' tekstL ';'], 'L=1;')
+
+  n=0:L-1;
+  tekstX=get(hEditX,'UserData');  tekstX=tekstX(Ktory,:);
+  ind=find(tekstX==0);
+  if ~isempty(ind)
+    tekstX=tekstX(1:ind(1)-1);
+  end;
+  eval(['x=' tekstX ';'], 'x=zeros(1,L);')
+
+  Re=get(h_real,'UserData');  Re=Re(Ktory,1);
+  
+  tekstNoise=get(hEditNoise,'UserData');  tekstNoise=tekstNoise(Ktory,:);
+  ind=find(tekstNoise==0);
+  if ~isempty(ind)
+    tekstNoise=tekstNoise(1:ind(1)-1);
+  end;
+  eval(['Noise=' tekstNoise ';'], 'Noise=-300;')
+
+  x=x(:);
+  if length(x)<L;
+    x(L)=0;
+  else
+    x=x(1:L);
+  end;
+  
+  N_lin=10.^(Noise/20);
+  if Re==1
+    x=real(x)+N_lin*randn(size(x));
+  else
+    x=x+N_lin*(randn(size(x))+j*randn(size(x)))/sqrt(2);
+  end;
+  max_x(Ktory)=max(abs([real(x); imag(x)]));
+   
+  %draw signal
+
+  %real part of the signal
+  axes(ha(1));
+  if isnan(hp_re(Ktory))
+    hold on;
+    hp_re(Ktory)=plot(n,real(x), 'Color', 'b');
+    hold off;
+  else
+    set(hp_re(Ktory),'Xdata', n, 'Ydata', real(x));
+  end
+%  set(ha(1), 'Xlim', [-0.5, L-0.5], 'Ylim', [-1.1 1.1]*max(max_x));
+%  eval('zoom reset', 'set(get(ha(1),''ZLabel''),''UserData'',[]);');    
+%  reset(get(ha(1),'ZLabel'));    
+  
+  %imaginary part of the signal
+%  axes(ha(2));
+  if isnan(hp_im(Ktory))
+    hold on;
+    hp_im(Ktory)=plot(n,imag(x), 'Color', 'r');
+    hold off;
+  else
+    set(hp_im(Ktory),'Xdata', n, 'Ydata', imag(x));
+  end
+  set(ha(1), 'Xlim', [-0.5, L-0.5], 'Ylim', [-1.1 1.1]*max(max_x));
+%  set(get(ha(2),'ZLabel'),'UserData',[]);    
+%  reset(get(ha(2),'ZLabel'));    
+%  eval('zoom reset', 'set(get(ha(1),''ZLabel''),''UserData'',[]);');    
+  if L>512
+    set([hp_re, hp_im], 'Marker', '.', 'MarkerSize', 4);
+  else
+    set([hp_re, hp_im], 'LineStyle', '-');
+  end;
+  eval('rmappdata(get(ha(1),''Zlabel''),''ZOOMAxesData'')','set(get(ha(1),''ZLabel''),''UserData'',[])');
+
+  set(hMenu,'UserData', [hp_re, hp_im,  hp_spec_t, hp_spec_t2, hp_spec, hp_per, hp_per2, max_x, min_spec, max_spec, min_per, max_per]);
+
+  %compute and draw periodogram
+  SPECgraf('spec', Ktory)
+%  SPECgraf zoom_on;
+  return;
+  
+elseif strcmp(Akcja, 'spec')
+  if nargin==2,
+    Ktory=param;
+  else
+    %save strings
+    tekst=[get(hEditK, 'String') 0];
+    pom=get(hEditK,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditK,'UserData', setstr(pom));
+    
+    tekst=[get(hEditM, 'String') 0];
+    pom=get(hEditM,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditM,'UserData', setstr(pom));
+    
+%    tekst=[get(hEditN, 'String') 0];
+%    pom=get(hEditN,'UserData');
+%    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+%       zeros(1, max([1; size(pom,2); length(tekst)]));
+%    pom(Ktory,1:length(tekst))=tekst;
+%    set(hEditN,'UserData', setstr(pom));
+    
+    tekst=[get(hEditO, 'String') 0];
+    pom=get(hEditO,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditO,'UserData', setstr(pom));
+    
+    tekst=[get(hEditW, 'String') 0];
+    pom=get(hEditW,'UserData');
+    pom(Ktory,1:max([1; size(pom,2); length(tekst)]))= ...
+       zeros(1, max([1; size(pom,2); length(tekst)]));
+    pom(Ktory,1:length(tekst))=tekst;
+    set(hEditW,'UserData', setstr(pom));
+    
+    tekst=get(h_det, 'Value');
+    pom=get(h_det,'UserData');
+    pom(Ktory,1)=tekst;
+    set(h_det,'UserData', pom);
+  end;
+
+  pom=get(hMenu,'UserData');
+  hp_re=pom(:,1);
+  hp_im=pom(:,2);
+  hp_spec_t=pom(:,3);
+  hp_spec_t2=pom(:,4);
+  hp_spec=pom(:,5);
+  hp_per=pom(:,6);
+  hp_per2=pom(:,7);
+  max_x=pom(:,8);
+  min_spec=pom(:,9);
+  max_spec=pom(:,10);
+  min_per=pom(:,11);
+  max_per=pom(:,12);
+  
+  %generate signal
+  tekstK=get(hEditK,'UserData');  tekstK=tekstK(Ktory,:);
+  ind=find(tekstK==0);
+  if ~isempty(ind)
+    tekstK=tekstK(1:ind(1)-1);
+  end;
+  eval(['K=' tekstK ';'], 'K=16;')
+
+  tekstM=get(hEditM,'UserData');  tekstM=tekstM(Ktory,:);
+  ind=find(tekstM==0);
+  if ~isempty(ind)
+    tekstM=tekstM(1:ind(1)-1);
+  end;
+  eval(['M=' tekstM ';'], 'M=16;')
+  if M>K
+    M=K;
+    set(hEditM,'String', num2str(M));
+  end;
+
+%  tekstN=get(hEditN,'UserData');  tekstN=tekstN(Ktory,:);
+%  ind=find(tekstN==0);
+%  if ~isempty(ind)
+%    tekstN=tekstN(1:ind(1)-1);
+%  end;
+%  eval(['N=' tekstN ';'], 'N=16;')
+
+  tekstO=get(hEditO,'UserData');  tekstO=tekstO(Ktory,:);
+  ind=find(tekstO==0);
+  if ~isempty(ind)
+    tekstO=tekstO(1:ind(1)-1);
+  end;
+%   eval(['O=' tekstO ';'], 'O=0;')
+  O=eval(tekstO, '0'); % \Fixed 2005.11.03 
+  O=round(O/100*M); % \Fixed 2005.11.03 nakładkowanie podawane w procentach !!! 
+  
+
+  tekstW=get(hEditW,'UserData');  tekstW=tekstW(Ktory,:);
+  ind=find(tekstW==0);
+  if ~isempty(ind)
+    tekstW=tekstW(1:ind(1)-1);
+  end;
+  eval(['w=' tekstW ';'], 'w=ones(1,M);')
+
+  w=w(:);
+  if length(w)<M;
+    w(M)=0;
+  else
+    w=w(1:M);
+  end;
+  
+  x=get(hp_re(Ktory), 'Ydata')+j*get(hp_im(Ktory), 'Ydata');
+
+%   O=floor(O/100*M); % \Fixed 2005.11.03
+  if O>=M
+    O=M-1;
+    set(hEditO,'String', num2str(O/M*100));
+  end;
+  N = fix((length(x)-O)/(M-O));
+  set(hEditN, 'String', sprintf('%i', N));
+
+%  det_=get(h_det,'UserData');  det_=det_(Ktory,1);
+%  if det_==0,
+%    det='none';
+%  else
+%    det_='linear';
+%  end;
+  
+  [Spec, f, t]=specgram(x, K, 1, w, O);
+  Spec=(abs(Spec).^2)/norm(w)^2;
+%   [Per, f2]=psd(x, K, 1, w, O);
+  [Per, f2]=pwelch(x, w, O, K, 1);
+  Spec=abs(Spec);
+
+  Re=get(h_real,'UserData'); 
+  if ~Re(Ktory,1)
+    f=fftshift(f);
+    f(1:floor(K/2))=f(1:floor(K/2))-1;
+    f2=fftshift(f2);
+    f2(1:floor(K/2))=f2(1:floor(K/2))-1;
+    Spec=[Spec(ceil(K/2):K,:); Spec(1:floor(K/2),:)];
+    Per=fftshift(Per);
+  end
+  
+  min_spec(Ktory)=min([min(Spec(isfinite(Spec))); 0]);
+  max_spec(Ktory)=max([max(Spec(isfinite(Spec))); 0.001]);
+  min_per(Ktory)=min([min(Per(isfinite(Per))); 0]);
+  max_per(Ktory)=max([max(Per(isfinite(Per))); 0.001]);
+  if get(h_dB, 'UserData') %dB
+    Spec=10*log10(Spec);
+    Per=10*log10(Per);
+  end
+  set(get(ha(2),'Ylabel'),'UserData', f);
+  set(get(ha(3),'Ylabel'),'UserData', Spec);
+  set(get(ha(4),'Ylabel'),'UserData', Per);
+  
+  %draw signal
+  axes(ha(2));
+  if length(t)>1
+    t2=t+(t(2)-t(1))/2;
+  else
+    t2=M/2;
+  end;
+  
+  if isnan(hp_spec_t(Ktory))
+    hold on;
+%    hp_spec_t(Ktory)=plot(t2,max(Spec), 'Color', 'k');
+    pomoc=abs(get(hp_re(Ktory),'Ydata')+j*get(hp_im(Ktory),'Ydata'));
+    hp_spec_t(Ktory)=plot(get(hp_re(Ktory),'Xdata'), pomoc, 'Color', 'k');
+    if length(pomoc)>512
+     set(hp_spec_t(Ktory), 'Marker', '.', 'MarkerSize', 4);
+   else
+     set(hp_spec_t(Ktory), 'LineStyle', '-');
+   end;
+    hold off;
+  else
+%    set(hp_spec_t(Ktory),'Xdata', t2, 'Ydata', max(Spec), 'Color', 'k');
+    set(hp_spec_t(Ktory),'Xdata', get(hp_re(Ktory),'Xdata'),...
+                         'Ydata', abs(get(hp_re(Ktory),'Ydata')+j*get(hp_im(Ktory),'Ydata')), 'Color', 'k');
+  end
+  if length(t)==1,
+    set(ha(2),  'Xlim', [t(1)-0.5 t(1)+0.5], 'Ylim', [-1.1 1.1]*max(max_x));
+  else
+    set(ha(2),  'Xlim', [t(1) t(length(t))+(t(2)-t(1))], 'Ylim', [-1.1 1.1]*max(max_x));
+  end;
+%  set(get(ha(2),'ZLabel'),'UserData',[]);    
+%  reset(get(ha(2),'ZLabel'));    
+  eval('rmappdata(get(ha(2),''Zlabel''),''ZOOMAxesData'')','set(get(ha(2),''ZLabel''),''UserData'',[])');
+
+  %spektrogram
+  axes(ha(3));
+  if isnan(hp_spec(Ktory))
+    hold on;
+    hp_spec(Ktory)=image(t2, f, Spec);
+    colormap(hot);
+    hold off;
+  else
+    set(hp_spec(Ktory),'Xdata', t2, 'Ydata', f, 'Cdata', Spec);
+  end
+  if length(t)==1,
+    tlim_=[t(1)-0.5 t(1)+0.5];
+  else
+    tlim_=[t(1) t(length(t))+t(2)-t(1)];
+  end;
+  if all(Re)
+    set(ha(3), 'Ylim', [0 0.5], 'Xlim', tlim_);
+  else
+    set(ha(3), 'Ylim', [-0.5 0.5], 'Xlim', tlim_);
+  end
+%  set(get(ha(3),'ZLabel'),'UserData',[]);    
+%  reset(get(ha(3),'ZLabel'));    
+  eval('zoom reset', 'set(get(ha(3),''ZLabel''),''UserData'',[]);');    
+  
+  axes(ha(4));
+  if isnan(hp_per(Ktory))
+    hold on;
+    hp_per(Ktory)=plot(Per, f2, 'Color', 'k');
+    hold off;
+  else
+    set(hp_per(Ktory),'Ydata', f2, 'Xdata', Per, 'Color', 'k');
+  end
+  set(ha(4), 'Xdir', 'reverse', 'YTick', []); %, 'Xlim', [t(1) t(length(t))], 'Ylim', [-1.1 1.1]*max(max_x));
+  if all(Re)
+    set(ha(4), 'Ylim', [0 0.5]);
+  else
+    set(ha(4), 'Ylim', [-0.5 0.5]);
+  end
+  eval('rmappdata(get(ha(4),''Zlabel''),''ZOOMAxesData'')','set(get(ha(4),''ZLabel''),''UserData'',[])');
+
+  set(hMenu,'UserData', [hp_re, hp_im, hp_spec_t, hp_spec_t2, hp_spec, hp_per, hp_per2, max_x, min_spec, max_spec, min_per, max_per]);
+
+  %  delete
+  if 1
+    pom=get(hMenu,'UserData');
+    hp_=pom(:,[4,7]);
+    hp_=hp_(isfinite(hp_));
+    if length(hp_)>0
+      delete(hp_)
+      pom(:,4)=NaN;
+      pom(:,7)=NaN;
+      set(hMenu,'UserData',pom);
+    end;
+  end
+  
+  SPECgraf('spec_ylim');
+  SPECgraf zoom_on;
+  SPECgraf zoom_off;
+  return;
+  
+elseif strcmp(Akcja, 'dB')
+  pom=get(h_dB, 'UserData');
+  if pom~=get(h_dB, 'Value')
+    pom=get(hMenu,'UserData');
+    hp_spec=pom(:,3);
+    for ind=1:length(hp_spec)
+      sygn=get(get(ha(3),'Ylabel'),'UserData');
+      per=get(get(ha(4),'Ylabel'),'UserData');
+      if get(h_dB, 'Value') %dB
+        sygn=10*log10(sygn);
+        per=10*log10(per);
+      else %lin
+        sygn=10.^(sygn/10);
+        per=10.^(per/10);
+      end;
+      set(get(ha(3),'Ylabel'),'UserData', sygn);
+      set(get(ha(4),'Ylabel'),'UserData', per);
+%      set(hp_spec(ind),'Cdata', sygn);
+    end;
+    set(h_dB, 'UserData', get(h_dB, 'Value'));
+
+    hp_=pom(:,[4 7]);
+    hp_=hp_(isfinite(hp_));
+    if length(hp_)>0
+      delete(hp_)
+      pom(:,4)=NaN;
+      pom(:,7)=NaN;
+      set(hMenu,'UserData',pom);
+    end;
+    SPECgraf('spec_ylim');
+  end
+  return
+  
+elseif strcmp(Akcja, 'spec_ylim')
+  pom=get(hMenu,'UserData');
+  hp_re=pom(:,1);
+  hp_im=pom(:,2);
+  hp_spec_t=pom(:,3);
+  hp_spec=pom(:,5);
+  hp_per=pom(:,6);
+  min_spec=pom(:,9);
+  max_spec=pom(:,10);
+  min_per=pom(:,11);
+  max_per=pom(:,12);
+  if get(h_dB, 'UserData') %dB
+    tekst=get(hEdit_dY,'String');
+    eval(['dY=' tekst ';'], 'dY=120;');
+    if dY<=0, dY=10; end;
+    params_=[min(min_spec) max(max_spec)];
+    ind_params = find(abs(params_) <= eps);
+    if length(ind_params) > 0,
+      params_(ind_params) = NaN*ones(size(ind_params));
+    end
+    ylim_=10*log10(params_);
+    if ~isfinite(ylim_(2))
+      ylim_(2)=0;
+    end
+    ylim_(1)=ylim_(2)-dY;
+    params_=[min(min_per) max(max_per)];
+    ind_params = find(abs(params_) <= eps);
+    if length(ind_params) > 0,
+      params_(ind_params) = NaN*ones(size(ind_params));
+    end
+    ylim_per=10*log10(params_);
+    if ~isfinite(ylim_per(2))
+      ylim_per(2)=0;
+    end
+    ylim_per(1)=ylim_per(2)-dY;
+  else
+    ylim_=[0 max(max_spec)];
+    ylim_per=[0 max(max_per)];
+  end
+  ylim_per(2)=max([ylim_per(2) ylim_(2)]);
+  f=get(get(ha(2),'Ylabel'),'UserData');
+  Spec=get(get(ha(3),'Ylabel'),'UserData');
+  Per=get(get(ha(4),'Ylabel'),'UserData');
+  set(hp_spec_t(Ktory),'Ydata', abs(get(hp_re(Ktory),'Ydata')+j*get(hp_im(Ktory),'Ydata')));
+  set(ha(2),'Ylim', ylim_+(ylim_(2)-ylim_(1))*[-0.1 0.1]);
+  Spec=64*(Spec-ylim_(1))/(ylim_(2)-ylim_(1));
+
+  set(hp_spec(Ktory),'Cdata', Spec);
+  set(hp_per(Ktory),'Xdata', Per, 'Ydata', f);
+  set(ha(4),'Xlim', ylim_per);
+
+  if get(h_dB, 'UserData') %dB
+    set(hp_spec_t(Ktory),'Ydata', 20*log10(abs(get(hp_re(Ktory),'Ydata')+j*get(hp_im(Ktory),'Ydata'))));
+  else
+    set(hp_spec_t(Ktory),'Ydata', abs(get(hp_re(Ktory),'Ydata')+j*get(hp_im(Ktory),'Ydata')));
+  end
+  
+  SPECgraf zoom_on;
+  eval('zoom reset', 'set(get(ha(3),''ZLabel''),''UserData'',[]);');    
+  SPECgraf zoom_off;
+  return
+elseif strcmp(Akcja, 'zoom_on')
+  zoom on;
+%   pom=get(fig, 'WindowButtonDownFcn');
+%   set(fig, 'WindowButtonDownFcn', 'SPECgraf zoom');
+%   set(get(ha(3),'Xlabel'), 'UserData', pom);
+  return;  
+elseif strcmp(Akcja, 'zoom_off')
+  if get(findobj(fig,'tag','checkbox_zoom'),'Value') == 0,
+%     pom = get(get(ha(3),'Xlabel'), 'UserData');
+%     set(fig, 'WindowButtonDownFcn', pom);
+    zoom off;
+    set(fig, 'WindowButtonDownFcn', 'SPECgraf zoom');
+    set(get(ha(3),'Xlabel'), 'UserData', '1;');
+  end
+  return;  
+elseif strcmp(Akcja, 'zoom_spec')
+  if get(findobj(fig,'tag','checkbox_zoom'),'Value') ~= 0,
+    Specgraf zoom_on;
+  else
+    Specgraf zoom_off;
+  end
+elseif strcmp(Akcja, 'zoom')
+%  if strcmp(get(fig,'SelectionType'),'normal') | (gca~=ha(3))
+  pause(0);
+  if (get(gco,'Parent')~=ha(3)) | get(findobj(fig,'tag','checkbox_zoom'),'Value')
+    eval(get(get(ha(3),'Xlabel'), 'UserData'));
+  elseif get(gco,'Parent')==ha(3)
+    pom=get(ha(3), 'CurrentPoint');
+    f_=pom(1,2); t_=pom(1,1);
+
+    pom_=get(hMenu,'UserData');
+    hp_spec_t2=pom_(:,4);
+    hp_spec=pom_(:,5);
+    hp_per2=pom_(:,7);
+    f=get(hp_spec(Ktory), 'Ydata');
+    ind_f=find(abs(f-f_)==min(abs(f-f_))); ind_f=ind_f(1);
+    t=get(hp_spec(Ktory), 'Xdata');
+%    if length(t)>1,
+%      t=t+(t(2)-t(1))/2;
+%    end;
+    ind_t=find(abs(t-t_)==min(abs(t-t_)));
+    ind_t=ind_t(1);
+    set(findobj(fig,'tag', 'text_t_f'),...
+      'ForegroundColor', 'r', 'String', sprintf('n=%i, f=%6.3f', t(ind_t),f(ind_f)));
+
+    Spec=get(get(ha(3),'Ylabel'),'UserData');
+    axes(ha(4));
+    if length(Spec(:,ind_t))>length(f)
+      ind=find(f==0);
+      Spec(ind(1),:)=[];
+    end;
+    if isnan(hp_per2(Ktory))
+      hold on;
+      hp_per2(Ktory)=plot(Spec(:,ind_t),f, 'Color', 'r', 'LineWidth', 2);
+      hold off;
+    else
+      set(hp_per2(Ktory),'Xdata', Spec(:,ind_t), 'Ydata', f);
+    end
+%    pom=get(ha(4), 'Xlim');
+%    pom(2)=max([pom(2) max(Spec(:,ind_t))]);
+%    set(ha(4),'Xlim', pom);
+
+    axes(ha(2));
+    if isnan(hp_spec_t2(Ktory))
+      hold on;
+      hp_spec_t2(Ktory)=plot(t,Spec(ind_f,:), 'Color', 'r', 'LineWidth', 2);
+      hold off;
+      SPECgraf zoom_on;
+      SPECgraf zoom_off;
+    else
+      set(hp_spec_t2(Ktory),'Xdata', t, 'Ydata', Spec(ind_f,:));
+    end
+
+    pom_(Ktory,7)=hp_per2;
+    pom_(Ktory,4)=hp_spec_t2;
+    set(hMenu,'UserData',pom_);
+  end;
+ return;  
+end;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function fig_h=Specgraf_DrawFig
+fig_h=figure;
+set(fig_h, ...
+  'Units', 'Normalized',...
+  'Position', [0.1125 0.1188 0.7813 0.7448],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'Name', 'Untitled',...
+  'NumberTitle', 'off',...
+  'Menu', 'none',...
+  'Tag', 'figure1'...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.0330 0.0881 0.2150 0.4867],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.0000 0.0000 0.0000],...
+  'YColor', [0.0000 0.0000 0.0000],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'per_axes'...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2900 0.6350 0.6990 0.1538],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.0000 0.0000 0.0000],...
+  'YColor', [0.0000 0.0000 0.0000],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'Signal_im_axes'...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2880 0.0867 0.7030 0.4867],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.0000 0.0000 0.0000],...
+  'YColor', [0.0000 0.0000 0.0000],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'spec_axes'...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2920 0.8266 0.6980 0.1580],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.0000 0.0000 0.0000],...
+  'YColor', [0.0000 0.0000 0.0000],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'Signal_re_axes'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0050 0.7972 0.2400 0.1930],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'frame2'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0050 0.5916 0.2400 0.2028],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'frame4'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1190 0.6364 0.0280 0.0350],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', '[%]',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text23'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.8720 0.0126 0.0660 0.0196],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'zoom',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'Specgraf zoom_spec',...
+  'Tag', 'checkbox_zoom'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0140 0.0098 0.0660 0.0378],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'Exit',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf Exit',...
+  'Tag', 'pushbutton5'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.4640 0.0028 0.3540 0.0350],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text_t_f'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1750 0.0126 0.0750 0.0364],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''spec_ylim'')',...
+  'Tag', 'dY_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1110 0.0154 0.0620 0.0308],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'dY [dB] =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text21'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.9270 0.5748 0.0500 0.0322],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'dB',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''dB'')',...
+  'Tag', 'dB_checkbox'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0660 0.4909 0.0600 0.0420],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'Delete',...
+  'Value', 0,...
+  'Visible', 'off',...
+  'Callback', 'SPECgraf(''delete'')',...
+  'Tag', 'pushbutton4'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0120 0.4909 0.0480 0.0420],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'New',...
+  'Value', 0,...
+  'Visible', 'off',...
+  'Callback', 'SPECgraf(''new'')',...
+  'Tag', 'pushbutton3'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1580 0.6769 0.0750 0.0364],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''spec'')',...
+  'Tag', 'N_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1280 0.6825 0.0300 0.0266],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'N =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text18'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0390 0.8014 0.0720 0.0378],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''signal'')',...
+  'Tag', 'L_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0090 0.8028 0.0290 0.0266],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'L =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text17'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.1290 0.7301 0.1100 0.0252],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'detrend',...
+  'Value', 0,...
+  'Visible', 'off',...
+  'Callback', 'SPECgraf(''spec'')',...
+  'Tag', 'detrend_checkbox'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0400 0.6378 0.0750 0.0364],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''spec'')',...
+  'Tag', 'O_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0110 0.6378 0.0280 0.0294],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'O =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text16'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0520 0.6000 0.1870 0.0336],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''spec'')',...
+  'Tag', 'w_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0130 0.5986 0.0400 0.0294],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'w[n] =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text15'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1670 0.8042 0.0720 0.0364],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''signal'')',...
+  'Tag', 'Noise_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1190 0.8042 0.0470 0.0266],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'Noise=',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text14'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0410 0.6769 0.0750 0.0364],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''spec'')',...
+  'Tag', 'M_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0110 0.6825 0.0300 0.0266],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'M =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text13'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1340 0.4909 0.1030 0.0392],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'off',...
+  'Callback', 'SPECgraf(''change_name'')',...
+  'Tag', 'Name_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'popupmenu',...
+  'Units', 'Normalized',...
+  'Position', [0.0120 0.5413 0.2260 0.0294],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Popup Menu',...
+  'Value', 1,...
+  'Visible', 'off',...
+  'Callback', 'SPECgraf(''Choose'')',...
+  'Tag', 'choose_popupmenu'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.1160 0.9580 0.1110 0.0266],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'real signal',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''signal'')',...
+  'Tag', 'real_checkbox'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0100 0.7622 0.1470 0.0266],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'Spectrograf parameters',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text10'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0400 0.7259 0.0750 0.0364],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''spec'')',...
+  'Tag', 'K_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0140 0.7329 0.0240 0.0252],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'K =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text9'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0390 0.8462 0.2010 0.1077],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', 'SPECgraf(''signal'')',...
+  'Tag', 'x_edit'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0130 0.9245 0.0240 0.0252],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'x =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text4'...
+  );
+h=uicontrol;
+x=version;
+if (x(1)>='5'),
+  set(h, ...
+    'FontSize', 10);
+end;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0120 0.9636 0.1010 0.0238],...
+  'BackGroundColor', [0.9255 0.9137 0.8471],...
+  'String', 'Testing signal',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'Callback', '',...
+  'Tag', 'text2'...
+  );
diff --git a/Ex2/matlab/design_task_2.m b/Ex2/matlab/design_task_2.m
new file mode 100644
index 0000000..5b2306c
--- /dev/null
+++ b/Ex2/matlab/design_task_2.m
@@ -0,0 +1,24 @@
+function h = design_task_2
+
+% Design: interpolation filter
+Fp_symb = 2000;
+Fp_out = 8000;
+L = Fp_out/Fp_symb
+
+N = 10*L+1;
+% filter type: square root raised cosine (podniesiony spierwiastkowany kosinus)
+h = 0.5* 1/L*rcos4(N, L, 0.33);
+
+
+figure(12)
+set(12, 'unit', 'normalized', 'position', [0.05, 0, 1-0.1, 2/3-0.1])
+freqz(h,1, 8*2048, L*Fp_symb)
+
+figure(11)
+set(11, 'unit', 'normalized', 'position', [0.05, 2/3, 1-0.1, 1/3-0.1])
+plot(h)
+
+dane.h  = L*h;
+dane.Fp = Fp_symb;
+save_filter_coef('ex2_task2', dane);
+
diff --git a/Ex2/matlab/design_tast_1.m b/Ex2/matlab/design_tast_1.m
new file mode 100644
index 0000000..1304a8b
--- /dev/null
+++ b/Ex2/matlab/design_tast_1.m
@@ -0,0 +1,26 @@
+function h=design_task_1
+
+%interpolation filter
+Fp1 = 22050; Fp2 = 44100;
+L = 2;
+
+% passband ripple +/-0.1 dB, out of band attenuation -96dB
+dp = 10.^(0.1/20)-1;
+ds = 10.^(-96/20);
+
+c = firpmord( [10000 12000], [1 0], [dp ds], Fp2, 'cell');
+h = firpm(c{:});
+N= length(h)
+
+figure(1)
+plot(h)
+% pause
+
+figure(2)
+freqz(h,1, 8*2048, L*Fp1)
+
+
+dane.h  = L*h;
+dane.Fp = Fp1;
+save_filter_coef('ex2_task1', dane);
+
diff --git a/Ex2/matlab/ex2_task1.coef b/Ex2/matlab/ex2_task1.coef
new file mode 100644
index 0000000000000000000000000000000000000000..a213126f48934dd85187d0d087bd02b5e30836ed
GIT binary patch
literal 326
zcmZQzWMm9rSTRX>*G(q9-L{|C?N*gox_jb@*q!kj_11IlueK`gZrq)fAii7u-305%
zWkuFfj~DKC__%fVXZiKk6^)EGGmdQ8edde7o^S8gS)bI)vN;_!bN36?>3bx1#ac_1
z?za*3Uc9T@{r#Q`znOQxjuElF+kM}<;e`2Kg@ws`%G*<I&qkfJnY?<^-qV%ZdtZ4S
zwN;%q-8MZ@bl<-g`F+lp7TejKPOt}I5E~>0k^`v$sRii)=>?eqG7DrT$ZU`uAiF?z
zg6syl0pu2tn?P;@xe?@6kefkn2l)Zy7m%MoegpXt<X4cNL4F5?0Vpg$VFC&pP#A&2
K3KV9bumb>k!K9`D

literal 0
HcmV?d00001

diff --git a/Ex2/matlab/ex2_task2.coef b/Ex2/matlab/ex2_task2.coef
new file mode 100644
index 0000000000000000000000000000000000000000..ae92edb74767e7d2a76083c2b3500f3273ae6326
GIT binary patch
literal 170
zcmZQzWMtH2*wSfd-F{tpcl7ULyNxqSci--Fus+iJ(puZx+S-hlaZjK@&YmarhjvFk
zYPXT(5Vm!l`pRapLB^hQ%9HkfXF0OB@s#S`hNN4zmT7bBgd)G#t?c5q2hkutNE{>&
mQU_8G(g)HHG6!TH$Xt;5AbUXef$Rm@4{`^{Js@|1+y?;P-Aw`j

literal 0
HcmV?d00001

diff --git a/Ex2/matlab/perGUI.m b/Ex2/matlab/perGUI.m
new file mode 100644
index 0000000..f40a00b
--- /dev/null
+++ b/Ex2/matlab/perGUI.m
@@ -0,0 +1,892 @@
+function fig_h=perGUI(state)
+if nargin == 0, state = 'on'; end;
+
+fig_h=figure('Visible', state);
+set(fig_h, ...
+  'Color', [1.0000 1.0000 1.0000],...
+  'Name', 'Untitled',...
+  'NumberTitle', 'off',...
+  'Menu', 'none',...
+  'Tag', 'figure1'...
+  );
+set(fig_h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2391667 0.1807407 0.5420833 0.6392593]...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2905457 0.6030841 0.6951576 0.1515287],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.1500 0.1500 0.1500],...
+  'YColor', [0.1500 0.1500 0.1500],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'Signal_im_axes'...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2937740 0.0424280 0.6930054 0.5015599],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.1500 0.1500 0.1500],...
+  'YColor', [0.1500 0.1500 0.1500],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'per_axes'...
+  );
+h=axes;
+set(h, ...
+  'Units', 'Normalized',...
+  'Position', [0.2926979 0.8182547 0.6919293 0.1469828],...
+  'Color', [1.0000 1.0000 1.0000],...
+  'XColor', [0.1500 0.1500 0.1500],...
+  'YColor', [0.1500 0.1500 0.1500],...
+  'FontSize', 10,...
+  'Box', 'on',...
+  'Tag', 'Signal_re_axes'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0021522 0.2697210 0.2582629 0.1136465],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'frame8'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0021522 0.0500045 0.2582629 0.2127462],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'frame7'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0032283 0.8834121 0.2582629 0.1075853],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'frame6'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0032283 0.6591497 0.2582629 0.2182013],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'frame2'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'frame',...
+  'Units', 'Normalized',...
+  'Position', [0.0032283 0.3924592 0.2582629 0.2560834],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'frame4'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.1898540 0.8424102 0.0630284 0.0301275],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Select dir',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', 'PERgraf(''select_dir'')',...
+  'Tag', 'pushbutton7'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.2926979 0.5500490 0.0538048 0.0348516],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'lock',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''lock'')',...
+  'Tag', 'lock_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1743274 0.0575809 0.0807071 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''Fs_changed'')',...
+  'Tag', 'Fs_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1000769 0.0606115 0.0699462 0.0333363],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'Fs [Sa/s] =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text27'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'popupmenu',...
+  'Units', 'Normalized',...
+  'Position', [0.0086088 0.6106605 0.2475019 0.0318210],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', ['Raw periodograph' ,...
+  '|Modified periodograph',...
+  '|Bartlett periodograph',...
+  '|Welch periodograph',...
+  ],...
+  'Value', 1,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', 'PERgraf(''per_type_change'')',...
+  'Tag', 'per_type_popupmenu'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1431207 0.2818433 0.0699462 0.0409127],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', '2.0',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''actionA'', ''maxA_edit'')',...
+  'Tag', 'maxA_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1108378 0.2879044 0.0322829 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'max:',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text26'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0365872 0.2803280 0.0699462 0.0409127],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', '0.0',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''actionA'', ''minA_edit'')',...
+  'Tag', 'minA_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0075327 0.2879044 0.0258263 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'min:',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text25'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'radiobutton',...
+  'Units', 'Normalized',...
+  'Position', [0.2184473 0.3030573 0.0322829 0.0257599],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '+',...
+  'Value', 1,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', 'PERgraf(''actionA'', ''A_plus_radio'')',...
+  'Tag', 'A_plus_radio'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'radiobutton',...
+  'Units', 'Normalized',...
+  'Position', [0.2184473 0.2772974 0.0322829 0.0257599],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'x',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', 'PERgraf(''actionA'', ''A_razy_radio'')',...
+  'Tag', 'A_razy_radio'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'slider',...
+  'Units', 'Normalized',...
+  'Position', [0.1172944 0.3288172 0.0193697 0.0469739],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', '',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', 'PERgraf(''actionA'', ''A_slider'')',...
+  'Tag', 'A_slider'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1818601 0.3333630 0.0699462 0.0409127],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', '0.1',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''actionA'', ''dA_edit'')',...
+  'Tag', 'dA_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1506533 0.3424548 0.0269024 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'dA =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text24'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0376633 0.3333630 0.0699462 0.0409127],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', '1.0',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''actionA'', ''A_edit'')',...
+  'Tag', 'A_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0107610 0.3409395 0.0258263 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'A =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text23'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0096849 0.0575809 0.0839354 0.0439433],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'PSD redraw',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', 'PERgraf(''signal'')',...
+  'Tag', 'pushbutton6'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1312836 0.4500401 0.0301307 0.0318210],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', '[%]',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'O_unit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0043044 0.0060611 0.0828593 0.0393975],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Exit',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''Exit'');',...
+  'Tag', 'pushbutton5'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1829362 0.0045459 0.0807071 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per_ylim'')',...
+  'Tag', 'dY_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1140661 0.0075764 0.0667179 0.0333363],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'left',...
+  'String', 'dY [dB] =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text21'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.9286703 0.5470185 0.0538048 0.0348516],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'dB',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''dB'')',...
+  'Tag', 'dB_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.1000769 0.2257777 0.0419677 0.0303057],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'b',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''Color'')',...
+  'Tag', 'b_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.0538048 0.2257777 0.0419677 0.0303057],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'g',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''Color'')',...
+  'Tag', 'g_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.0107610 0.2257777 0.0419677 0.0303057],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'r',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''Color'')',...
+  'Tag', 'r_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0710223 0.8940191 0.0645657 0.0454586],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Delete',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''delete'')',...
+  'Tag', 'pushbutton4'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'pushbutton',...
+  'Units', 'Normalized',...
+  'Position', [0.0129131 0.8940191 0.0516526 0.0454586],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'New',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''new'')',...
+  'Tag', 'pushbutton3'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0086088 0.1091006 0.2453497 0.0924325],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Static Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 8,...
+  'Callback', '',...
+  'Tag', 'text20'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0075327 0.2015331 0.1786318 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'Periodogram parameters',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text19'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1678709 0.4879223 0.0807071 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per'')',...
+  'Tag', 'N_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1355880 0.4939834 0.0322829 0.0287904],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'N =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'N_label'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0398155 0.6636955 0.0774789 0.0409127],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''signal'')',...
+  'Tag', 'L_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0075327 0.6636955 0.0312068 0.0287904],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'L =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text17'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.1366641 0.5455032 0.1183705 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'detrend',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per'')',...
+  'Tag', 'detrend_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0408916 0.4454943 0.0807071 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per'')',...
+  'Tag', 'O_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0096849 0.4454943 0.0301307 0.0318210],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'O =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'O_label'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0538048 0.4000357 0.2012298 0.0363669],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per'')',...
+  'Tag', 'w_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0118370 0.3985204 0.0430438 0.0318210],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'w[n] =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'w_label'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1775557 0.6652108 0.0774789 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''signal'')',...
+  'Tag', 'Noise_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.1259032 0.6652108 0.0505765 0.0287904],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'Noise=',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text14'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0419677 0.4879223 0.0807071 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per'')',...
+  'Tag', 'M_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0096849 0.4939834 0.0322829 0.0287904],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'M =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'M_label'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.1441968 0.8940191 0.1108378 0.0424280],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''change_name'')',...
+  'Tag', 'Name_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'popupmenu',...
+  'Units', 'Normalized',...
+  'Position', [0.0129131 0.9485694 0.2431975 0.0318210],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Popup Menu',...
+  'Value', 1,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''Choose'')',...
+  'Tag', 'choose_popupmenu'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'checkbox',...
+  'Units', 'Normalized',...
+  'Position', [0.1237510 0.8435689 0.066 0.0289687],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'center',...
+  'String', 'real',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''signal'')',...
+  'Tag', 'real_checkbox'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0086088 0.5803548 0.1581860 0.0287904],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'Peridograf parameters',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text10'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0408916 0.5394420 0.0807071 0.0393975],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''per'')',...
+  'Tag', 'K_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0129131 0.5470185 0.0258263 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'K =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text9'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'edit',...
+  'Units', 'Normalized',...
+  'Position', [0.0398155 0.7091541 0.2152191 0.1272841],...
+  'BackGroundColor', [1.0000 1.0000 1.0000],...
+  'HorizontalAlignment', 'center',...
+  'String', 'Edit Text',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', 'PERgraf(''signal'')',...
+  'Tag', 'x_edit'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0118370 0.8046172 0.0258263 0.0272752],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'x =',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text4'...
+  );
+h=uicontrol;
+set(h, ...
+  'Style', 'text',...
+  'Units', 'Normalized',...
+  'Position', [0.0107610 0.8440146 0.1086856 0.0257599],...
+  'BackGroundColor', [0.9400 0.9400 0.9400],...
+  'HorizontalAlignment', 'left',...
+  'String', 'Analysed signal',...
+  'Value', 0,...
+  'Visible', 'on',...
+  'FontName', 'MS Sans Serif',...
+  'Fontsize', 10,...
+  'Callback', '',...
+  'Tag', 'text2'...
+  );
diff --git a/Ex2/matlab/rcos4.m b/Ex2/matlab/rcos4.m
new file mode 100644
index 0000000..233f780
--- /dev/null
+++ b/Ex2/matlab/rcos4.m
@@ -0,0 +1,51 @@
+function h_rc=rcos4(N,L, r)
+%square root raised cosine
+
+fp=1000;
+
+if nargin==2,
+  r=0.5;
+end
+
+n=(0:N-1)-(N-1)/2;
+% t=n/fp; T=L/fp;
+
+% % L=pi*L; h_rc=sinc(pi*n/L).*cos(pi*r*n/L)./(L-4*(r.^2)*(n.^2)/L);
+% h_rc=sinc(t/T).*cos(r*pi*t/T)./(1-4*(r.^2)*(t.^2)/T.^2);
+h_rc=(1-r)*sinc((1-r)*n/L) + ...
+     r*( sinc(r*n/L+1/4).*cos(pi*(n/L+1/4)) + ...
+         sinc(r*n/L-1/4).*cos(pi*(n/L-1/4)) );
+% % h_rc= 4*r* ( cos((1+r)*pi*n/L) + sin((1-r)*pi*n/L)./(4*r*n/L)) ...
+% %       ./ (pi*sqrt(1/L)*(1-(4*r*n/L).^2));
+% 
+ind=~isfinite(h_rc);
+h_rc(ind)=0;
+
+if nargout==0,
+	figure(1)
+	subplot(3,1,1)
+	stem(n/L,h_rc)
+	subplot(3,1,2)
+  n=-(N-1):(N-1);
+%   size(n)
+%   size(conv(h_rc,h_rc))
+	stem(n/L,conv(h_rc,h_rc))
+	subplot(3,1,3)
+	H=freqz(h_rc,1,2048, 'whole');
+	H=abs(H(1:end/2));
+	f=linspace(0,1000,length(H));
+	plot(f,H)
+  
+	H=freqz(ones(1,L),1,2048, 'whole');
+	H=abs(H(1:end/2));
+	f=linspace(0,1000,length(H));
+  hold on
+	plot(f,H,'k')
+  hold off
+	H=freqz(conv(h_rc,h_rc)/L,1,2048, 'whole');
+	H=abs(H(1:end/2));
+	f=linspace(0,1000,length(H));
+  hold on
+	plot(f,H,'m')
+  hold off
+end
\ No newline at end of file
diff --git a/Ex2/matlab/readaudiofile.m b/Ex2/matlab/readaudiofile.m
new file mode 100644
index 0000000..825a9a8
--- /dev/null
+++ b/Ex2/matlab/readaudiofile.m
@@ -0,0 +1,215 @@
+function [x, Fs] = readaudiofile(filename, param)
+% [x, Fs] = readaudiofile(filename, param)
+%
+% returns vector x of the size SIZE=[samples channels].
+%  eg. x = x(:,1) + j*x(:,2);
+%
+% special uses:
+%  param == 'size': returns SIZE in x
+%  param == 'cplx': for stereo files returns x as a complex vector instead of matrix 
+%
+%  supported file types:
+%    *.flt
+%    *.wav
+%    *.tape
+% last modification: 2021.03.29
+% Author: Marek Blok
+
+return_cplx = 0;
+if nargin == 1,
+  param = inf;
+else
+  if strcmp(param, 'cplx') == 1,
+    return_cplx = 1;
+    param = inf;
+  end
+end
+
+ind = find(filename == '.');
+if length(ind) == 0,
+  file_type = 'w'; % *.wav
+else
+  ind = ind(end);
+  
+  temp = filename(ind+1:end);
+  
+  file_type = 'u'; % unknown format
+  if strcmp(temp, 'flt') == 1,
+    file_type = 'f'; % two channel floting point
+  elseif strcmp(temp, 'wav') == 1,
+    file_type = 'w'; % *.wav
+  elseif strcmp(temp, 'tape') == 1,
+    file_type = 't'; % *.tape
+  end
+end
+
+switch file_type,
+  case 'w',
+    if strcmp(param, 'size') == 1,
+      if exist('audioread','file') == 0
+        x = wavread(filename, 'size');
+        %  siz = [samples channels].
+      else
+        info = audioinfo(filename);
+        x = [info.TotalSamples, info.NumChannels];
+        Fs = info.SampleRate;
+      end      
+    else
+      if isfinite(param)
+        if exist('audioread','file') == 0
+          [x, Fs] = wavread(filename, param);
+        else
+          if length(param) == 1
+            param = [1, param];
+          end
+          [x, Fs] = audioread(filename, param);
+        end
+      else
+        if exist('audioread','file') == 0
+          [x, Fs] = wavread(filename);
+        else
+          [x, Fs] = audioread(filename);
+        end
+      end
+    end
+    
+  case 't'
+    plik = fopen(filename, 'rb');
+    if plik == -1,
+      error('File does not exist !!!');
+    end
+    
+    header.size = fread(plik, 1, 'uint32', 0) + 4;
+
+    header.fname      = char(fread(plik, 256, 'char', 0).');
+    header.cfg_fname  = char(fread(plik, 256, 'char', 0).');
+    header.sw_rev     = fread(plik, 1, 'uint32', 0);
+    header.hw_rev     = fread(plik, 1, 'uint32', 0);
+    header.file_      = fread(plik, 1, 'uint32', 0);
+    header.tape_type  = fread(plik, 1, 'uint32', 0);
+    header.start_time = fread(plik, 1, 'int32', 0); % time_t
+    header.end_time   = fread(plik, 1, 'int32', 0); % time_t
+    
+    header.total_samples  = fread(plik, 1, 'uint32', 0); 
+    file_length = header.total_samples * 4  + header.size
+    header.current_sample = fread(plik, 1, 'uint32', 0); 
+    header.loop_start     = fread(plik, 1, 'int64', 0); 
+    header.loop_end       = fread(plik, 1, 'int64', 0); 
+    header.loop           = fread(plik, 1, 'int32', 0); 
+    header.group_size_32  = fread(plik, 1, 'uint32', 0); 
+    header.block_size     = fread(plik, 1, 'uint32', 0); 
+    header.block_count    = fread(plik, 1, 'uint32', 0); 
+    header.fifo_size      = fread(plik, 1, 'uint32', 0); 
+
+
+    header.comment      = char(fread(plik, 256, 'char', 0).');
+    header.tmp  = char(fread(plik, 20, 'char', 0).'); % time_t
+    header.status       = fread(plik, 1, 'uint32', 0); 
+    header.timestamps   = fread(plik, 1, 'int32', 0); 
+    header.freq         = fread(plik, 1, 'float', 0); 
+    header.cplx_datarate = fread(plik, 1, 'float', 0); 
+    
+%     ftell(plik)
+    header.reserved = fread(plik, 128, 'uint32', 0);
+%     header.reserved.'
+    
+    header
+    ftell(plik)
+
+    header.sample_type = 2;
+    header.ch_no = 2;
+    header.Fs = NaN;
+    
+    sample_type = 'int16';
+    sample_size = 2;
+
+    header_size = header.size;
+    if strcmp(param, 'size') == 1,
+      fseek(plik, 0, 'eof');
+      size = (ftell(plik) - header_size) / sample_size / header.ch_no; % sizeof(float) *2
+      x = size;
+    else
+      fseek(plik, header_size, 'bof');
+      
+      len = param(1);
+      if length(param) > 1,
+        fseek(plik, sample_size*header.ch_no*(param(1)-1), 'cof');
+        len = param(2) - param(1) + 1;
+      end
+        
+%       x = fread(plik, [header.ch_no, len], sample_type);
+      x = fread(plik, [header.ch_no, len], sample_type, 0);
+      x = x.';
+    end
+    fclose(plik);
+    
+  case 'f'
+    plik = fopen(filename, 'rb');
+    if plik == -1,
+      error('File does not exist !!!');
+    end
+    
+    % 3 B - wersja pliku (w tym typ próbek)
+    % 1 B - liczba kanałów
+    % 4 B - szybkoœć próbkowania
+    header_size = 8;
+    header.ver = fread(plik, 1, 'uint8');
+    header.sample_type = fread(plik, 1, 'uint16');
+    header.ch_no = fread(plik, 1, 'uint8');
+    header.Fs = fread(plik, 1, 'uint32');
+    
+    Fs = header.Fs;
+    
+    switch (header.ver),
+      case 0,
+        switch (header.sample_type),
+          case 0,
+            sample_type = 'float';
+            sample_size = 4;
+          case 1,
+            sample_type = 'uchar';
+            sample_size = 1;
+          case 2,
+            sample_type = 'short';
+            sample_size = 2;
+          case 3,
+            sample_type = 'int';
+            sample_size = 4;
+          otherwise
+            error('Unsupported *.flt sample type !!!');
+        end
+      otherwise
+        error('Unsupported *.flt file version !!!');
+    end
+        
+    
+    if strcmp(param, 'size') == 1,
+      fseek(plik, 0, 'eof');
+      size = (ftell(plik) - header_size) / sample_size / header.ch_no; % sizeof(float) *2
+      x = size;
+    else
+      len = param(1);
+      status = 0;
+      if length(param) > 1,
+        status = fseek(plik, sample_size*header.ch_no*(param(1)-1), 'cof');
+        len = param(2) - param(1) + 1;
+      end
+        
+      if (status == -1)
+        x = [];
+      else
+        x = fread(plik, [header.ch_no, len], sample_type);
+        x = x.';
+      end
+    end
+    
+    fclose(plik);
+  otherwise
+    error('Unsupported file format !!!');
+end
+
+if return_cplx == 1,
+  if length(x(1,:)) == 2,
+    x = x(:,1) + j*x(:,2);
+  end
+end
\ No newline at end of file
diff --git a/Ex2/matlab/readme.txt b/Ex2/matlab/readme.txt
new file mode 100644
index 0000000..34a4e99
--- /dev/null
+++ b/Ex2/matlab/readme.txt
@@ -0,0 +1 @@
+audioread('../cw1_zad3.wav')
\ No newline at end of file
diff --git a/Ex2/matlab/save_filter_coef.m b/Ex2/matlab/save_filter_coef.m
new file mode 100644
index 0000000..8cf1f07
--- /dev/null
+++ b/Ex2/matlab/save_filter_coef.m
@@ -0,0 +1,226 @@
+function save_filter_coef(filename, coefficients, file_version) 
+% save_filter_coef(filename, coefficients [, file_version]) 
+% 
+% FIR filter coefficients
+%   coefficients.h
+%    - can be cell vector to store multiple FIR impulse responces
+%    - if any of the impulse responses is complex then all responses will
+%      be stored as complex
+% IIR filter coefficients
+%   coefficients.a
+%   coefficients.b
+% 
+% For file_version >= 1 (default == 0),
+%   coefficients.Fp - sampling frequency
+%
+% This file is a part of Digital Signal Processing Engine
+% 
+% File format (*.coef) - this is open format, for general use
+%  *  (not only for storing coefficients)
+%  
+% File format (*.h) - this is C++ header file for DSPElib with hardcoded *.coef equivalent 
+%
+% \author Marek Blok
+% \date 2020.02.22
+
+if nargin == 2,
+  file_version = 0;
+end
+
+ind = find(filename == '.');
+if length(ind) == 0,
+  filename = [filename, '.coef'];
+end
+
+% detect mode based on file extention
+[PATHSTR,NAME,EXT] = fileparts(filename);
+switch EXT
+  case '.h'
+    mode = 'h-file';
+    plik = fopen(filename, 'wt');
+
+  case '.coef'
+    mode = 'coefs-file';
+    plik = fopen(filename, 'wb');
+
+  otherwise
+    mode = 'unknown-file';
+    error(mode);
+end
+
+switch mode
+  case 'h-file'
+    fprintf(plik, '// save_filter_coef output (hard coded coefficients)\n');
+    fprintf(plik, '#pragma once\n');
+    fprintf(plik, '#include <DSP_lib.h>\n');
+    fprintf(plik, '\n');
+    
+    if isfield(coefficients, 'h'),
+      h = coefficients.h;
+      
+      for ind_h = 0:length(h)-1
+        fprintf(plik, 'DSP_float_vector Farrow_coefs_row_%i = {', ind_h);
+        h_tmp = h{ind_h+1};
+        for ind_p = 0:length(h_tmp)-1,
+          if ind_p > 0
+            fprintf(plik, ', ');
+          end
+          fprintf(plik, '%.15ff', h_tmp(ind_p+1));
+        end
+        %0.1f, 0.2f, 0.1f
+        fprintf(plik, '};\n');
+      end
+      fprintf(plik, '\n');
+      
+      %vector <DSP_float_vector> Farrow_coefs = { coefs_0, coefs_1, coefs_2 };
+      fprintf(plik, 'vector <DSP_float_vector> Farrow_coefs = {');
+      for ind_h = 0:length(h)-1
+        if ind_h > 0
+          fprintf(plik, ', ');
+        end
+        if (ind_h < length(h_tmp)) & (rem(ind_h, 5) == 0)
+          fprintf(plik, '\n    ');
+        end
+        fprintf(plik, 'Farrow_coefs_row_%i', ind_h);
+      end
+      fprintf(plik, '\n  };\n');
+      
+      fprintf(plik, '\n');
+      fprintf(plik, 'const unsigned int p_Farrow = %i; // should be equal to Farrow_coefs[0].size()-1\n', length(h{1})-1);
+      fprintf(plik, 'const unsigned int N_FSD = %i; // should be equal to Farrow_coefs.size()\n', length(h));
+    end
+   
+    if isfield(coefficients, 'b'),
+      fclose all;
+      error('unsupported: coefficients.b');
+    end
+    if isfield(coefficients, 'a'),
+      fclose all;
+      error('unsupported: coefficients.a');
+    end
+    
+  case 'coefs-file'
+    %  *  - (uchar) 1B - file version number
+    fwrite(plik, file_version, 'uchar');
+
+    switch file_version,
+      case 0,
+      case 1,
+        %  *  - (uint) 4B - Sampling frequency
+        if isfield(coefficients, 'Fp'),
+          fwrite(plik, coefficients.Fp, 'uint32');
+        else
+          fclose(plik);
+          error('Input data does not contain Fp');
+        end
+      otherwise,
+        fclose(plik);
+        error('This version of coefficients file is unsupported');
+    end
+
+    if isfield(coefficients, 'h'),
+      isFIR = 1;
+      if iscell(coefficients.h)
+        resp_no = length(coefficients.h);
+    %     if resp_no = 1;
+    %       coefficients.h = coefficients.h{1};
+    %     end
+      else
+        resp_no = 1;
+      end
+      if resp_no == 1,
+        isComplex = any(imag(coefficients.h(:)));
+      else
+        isComplex = false;
+        for ind_resp = 1:resp_no,
+          isComplex = isComplex | any(imag(coefficients.h{ind_resp}(:)));
+        end
+      end
+    else
+      isFIR = 0;
+      isComplex = any(imag(coefficients.a(:))) | any(imag(coefficients.b(:)));
+    end
+
+    %  *  -  data - coefficients data (depends on fle version)
+    %  *  .
+    %  *  Data segment format:
+    %  *  -# (version: 0x00)
+    %  *   -  (uchar) 1B - number of sample dimensions
+    %  *         1 - real, 2 - complex, ...
+    if isComplex,
+      fwrite(plik, 2, 'uchar'); % complex
+    else
+      fwrite(plik, 1, 'uchar'); % real
+    end
+    %  *   -  (uchar) 1B - sample component type
+    %  *    - DSP_FT_float (=1) : C++ float (32bit floating point)
+    %  *    - DSP_FT_short (=2) : C++ short (16bit signed integer)
+    %  *    - DSP_FT_uchar (=3) : C++ unsigned char (8bit unsigned integer with bias (0x80))
+    %  *    - DSP_FT_double (=7) : C++ double (64bit floating point)
+    %  *    - DSP_FT_long_double (=8) : C++ long double (80bit floating point)
+    fwrite(plik, 1, 'uchar');
+
+    %  *   -  (uchar) 1B - number of vectors
+    %  *    -   1 - FIR filter coefficients (one vector)
+    %  *    -   2 - IIR filter coefficients (two vectors)
+    %  *   -  (x number of vectors)
+    %  *    -   (ushort) 2B - number of samples in vector
+    %  *    -   (x number of samples)
+    %  *      -   (x number of sample dimensions)
+    %  *       -    (sample componet type) xB - sample component
+    %  *               e.g. real, imag part
+    if isFIR,
+      fwrite(plik, resp_no, 'uchar');
+
+      if iscell(coefficients.h)
+        for ind_resp = 1:resp_no,
+          N_FIR = length(coefficients.h{ind_resp});
+          fwrite(plik, N_FIR, 'uint16');
+          if isComplex,
+            dane(1:2:2*N_FIR) = real(coefficients.h{ind_resp});
+            dane(2:2:2*N_FIR) = imag(coefficients.h{ind_resp});
+            fwrite(plik, dane, 'float');
+          else
+            fwrite(plik, real(coefficients.h{ind_resp}), 'float');
+          end
+        end
+      else
+        N_FIR = length(coefficients.h);
+        fwrite(plik, N_FIR, 'uint16');
+        if isComplex,
+          dane(1:2:2*N_FIR) = real(coefficients.h);
+          dane(2:2:2*N_FIR) = imag(coefficients.h);
+          fwrite(plik, dane, 'float');
+        else
+          fwrite(plik, real(coefficients.h), 'float');
+        end
+      end
+
+    else
+      fwrite(plik, 2, 'uchar');
+
+      N_a = length(coefficients.a);
+      fwrite(plik, N_a, 'uint16');
+      if isComplex,
+        dane(1:2:2*N_a) = real(coefficients.a);
+        dane(2:2:2*N_a) = imag(coefficients.a);
+        fwrite(plik, dane, 'float');
+      else
+        fwrite(plik, real(coefficients.a), 'float');
+      end
+
+
+      N_b = length(coefficients.b);
+      fwrite(plik, N_b, 'uint16');
+      if isComplex,
+        dane(1:2:2*N_b) = real(coefficients.b);
+        dane(2:2:2*N_b) = imag(coefficients.b);
+        fwrite(plik, dane, 'float');
+      else
+        fwrite(plik, real(coefficients.b), 'float');
+      end
+    end
+
+end
+fclose(plik);
+
diff --git a/Ex2/rundot.bat b/Ex2/rundot.bat
new file mode 100644
index 0000000..937cfc7
--- /dev/null
+++ b/Ex2/rundot.bat
@@ -0,0 +1,5 @@
+path = "D:\Program Files (x86)\Graphviz\bin";%path%
+
+del Ex2_task1.gif
+dot -Tgif Ex2_task1.dot -oEx2_task1.gif
+
-- 
GitLab