Tvorba algoritmov s Live Editor Tasks

MATLAB poskytuje niekoľko možností na tvorbu algoritmov pre analýzu vašich dát. Tradične využívame skripty a funkcie, do ktorých píšeme kód. Pokiaľ chcete rozšíriť vašu analýzu o texty, obrázky, hyperlinky alebo vzorce MATLAB podporuje tvorbu takéhoto dokumentu pomocou Live Skriptov. Live Skripty môžu obsahovať aj interaktívne ovládacie nástroje, ktorými vieme ovládať premenné využívané v algoritmoch. Pre operácie, ktoré typicky používatelia využívajú boli vytvorené aplikácie (záložka APPS). Od verzie R2019b je možné vložiť do Live Skriptov užitočné nástroje – Live Editor Tasks.

Live Editor Tasks

Live Editor Tasks je množina nástrojov, ktoré uľahčujú tvorbu algoritmov interaktívnym spôsobom. Tasky je možné vložiť do Live Skriptov na miesto, kde by ste museli písať kód. Výhoda Taskov je, že nemusíte prepisovať kód zakaždým, keď chcete vyskúšať iný parameter algoritmu. Typickým príkladom je práca s chýbajúcimi dátami, vyhladenie dát alebo hľadanie extrémov. Okrem práce s dátami sú pripravené Tasky pre riadiace systémy, identifikáciu systémov, prediktívnu údržbu a mnoho ďalších oblastí. Tasky nájdete v záložke LIVE EDITOR a časti Tasks.

Analýza ECG signálu

Aby sme si ukázali ako s Taskami môžeme pracovať, využijeme príklad Peak Analysis z dokumentácie Signal Processing Toolboxu. Druhá časť dema sa venuje analýze ECG signálu na zašumených dátach s trendom. Demo nájdete na nasledujúcom odkaze.

Odstránenie trendu

Ako prvé si načítame a vykreslime dáta.

 load noisyecg.mat
t = 1:length(noisyECG_withTrend);
figure
plot(t,noisyECG_withTrend)
title('Signal with a Trend')
xlabel('Samples');
ylabel('Voltage(mV)')
legend('Noisy ECG Signal')
 grid on

Do skriptu pridáme prvý Task, ktorý sa volá Remove Trends. Pomocou tohto Tasku si vyskúšame odstránenie trendu pomocou polynómu, ktorý dátami preložíme. Task má niekoľko možnosti, ktoré môžeme využiť. Ako prvé označíme vstupné dáta (noisyECG_wit­hTrend) a X-ovú os (t). V našom príklade budeme meniť len stupeň polynómu. Prepneme na možnosť Custom a pomocou ovládacieho prvku vieme meniť parameter. Premennú s výstupnými dátami sa dá nastaviť v ľavom hornom rohu po zadaní vstupných dát.

Sekciu s Taskom môžeme spustiť a môžete si všimnúť, že pod Taskom sa objaví graf. Tento graf sa aktualizuje ako s Taskom pracujeme. Pre polynóm 5 stupňa vyzerá odstránenie trendu nasledovne:

Tasky majú niekoľko zaujímavých nastavení. Automatické vykonávanie Tasku je zapnuté preto, aby ste videli hneď aktuálne výsledky. Pokiaľ vám to nevyhovuje, môžete to zmeniť kliknutím na zelenú guličku v pravom hornom rohu (zmení sa na bielu). Okrem Tasku si môžeme zobraziť kód, či už cez menu v pravom hornom rohu (Controls and Code), alebo šípku v strede dolnej časti Tasku. Ako ďalšie vieme Task minimalizovať šípkou v ľavom hornom rohu. Ako posledné môžeme skonvertovať Task na kód, ktorý vieme upraviť – v menu Convert Task to Editable Code.

Vyhladenie dát

Ako ďalšie využijeme Task na vyhladenie dát – Smooth Data. Nastavíme parametre podobné tým, ktoré využíva demo, ale môžete vyskúšať iné modifikácie.

Nájdenie extrémov

Na vyhľadanie Q, R, S vĺn využijeme Task Find Local Extrema.

Task nájde viac extrémov ako potrebujeme, preto využijeme skript na výber extrémov. Zaujímavé extrémy sa nachádzajú v určitých zónach dát.

 min_locs = t(minIndices);
max_locs = t(maxIndices);
locs_Rwave = max_locs(smoothECG(t(max_locs))>0.5);
locs_Swave = min_locs(smoothECG(min_locs)<-0.5);
locs_Qwave = min_locs(smoothECG(min_locs)>-0.5 & smoothECG(min_locs)<-0.2);

Ako posledné si môžeme vykresliť spracované dáta s označenými Q, R, S vlnami.

 figure
hold on
plot(t,smoothECG);
plot(locs_Qwave,smoothECG(locs_Qwave),'rs','MarkerFaceColor','g')
plot(locs_Rwave,smoothECG(locs_Rwave),'rv','MarkerFaceColor','r')
plot(locs_Swave,smoothECG(locs_Swave),'rs','MarkerFaceColor','b')
grid on
title('Thresholding Peaks in Signal')
xlabel('Samples')
ylabel('Voltage(mV)')
ax = axis;
axis([0 1850 -1.1 1.1])
 legend('Smooth ECG signal','Q wave','R wave','S wave')

Skript na vyskúšanie

Pokiaľ si chcete príklad vyskúšať, môžete skopírovať dáta z dema, z tohto blogu, alebo z Live Skriptu, ktorý pripravila Heather Gorr a je dostupný na stránke File Exchange.

Záver

MATLAB poskytuje niekoľko možností na podporu tvorby algoritmov. Live Tasky od verzie R2019b umožňujú jednoduché a rýchle testovanie parametrov typických operácií. Viac o Live Taskoch sa dozviete aj z dokumentácie.

Michal Blaho (HUMUSOFT), 15.4.2020