Orodha ya maudhui:

Majaribio ya Uwekaji wa Takwimu za Juu (Kutumia Chatu): Hatua 11
Majaribio ya Uwekaji wa Takwimu za Juu (Kutumia Chatu): Hatua 11

Video: Majaribio ya Uwekaji wa Takwimu za Juu (Kutumia Chatu): Hatua 11

Video: Majaribio ya Uwekaji wa Takwimu za Juu (Kutumia Chatu): Hatua 11
Video: Majambazi walipopambana na Polisi baada ya kuiba pesa NMB Bank 2024, Julai
Anonim
Majaribio ya Uwekaji wa Takwimu za Juu (Kutumia Chatu)
Majaribio ya Uwekaji wa Takwimu za Juu (Kutumia Chatu)

Kuna mafundisho mengi ya ukataji wa data, kwa hivyo wakati nilitaka kujenga mradi wa kukata miti mwenyewe niliangalia karibu na kundi. Zingine zilikuwa nzuri, zingine sio nyingi, kwa hivyo niliamua kuchukua maoni bora na kufanya maombi yangu mwenyewe. Hii ilisababisha mradi kuwa wa hali ya juu zaidi na ngumu zaidi kuliko vile nilivyotarajia mwanzoni. Sehemu moja yake ikawa safu ya majaribio katika usindikaji wa data ya sensorer. Mafundisho haya hukuruhusu kujaribu majaribio sawa au yanayofanana.

(Unaweza kutazama nambari yote na kuipakua kwa: Nambari kwenye GitHub Unaweza kuingia kutazama, labda kwenye dirisha lingine, kwa kubofya mara 2 tu)

Uwekaji wa data kawaida unajumuisha yafuatayo:

  • Upataji wa data: Soma data kutoka sensa. Mara nyingi hii ni kusoma tu analojia kwa kibadilishaji cha dijiti (ADC) kwenye kifaa kama Arduino.
  • Usindikaji wa data: Wakati wa kusoma dhamana ya ADC pato la waongofu kawaida huhitaji kupandishwa kwa vitengo sahihi. Kunaweza pia kuwa na hitaji la kufanya marekebisho kadhaa ili kusawazisha maadili ili kurekebisha makosa ya sensorer.
  • Kuchuja: Takwimu kawaida huwa na kelele, hii inaweza kuchujwa kwa hivyo unatafuta ishara katika data yako, sio kelele.
  • Uhifadhi wa data: Takwimu zimehifadhiwa, labda kwa faili ya maandishi, labda kwa wingu. Takwimu zinapaswa kuishi hata kama umeme unazima. Ni rahisi kuokoa data nyingi, tuna hila kidogo kupunguza nafasi ya kuhifadhi data.
  • Uonyesho wa data: Njia za kuangalia data yako, sio ukataji wa data kweli, lakini ikiwa haufanyi aina fulani ya onyesho la data kwanini uikusanye?
  • Ufikiaji wa mbali: Sio lazima lakini ni nzuri kuwa nayo.

Mafundisho mengi ni pamoja na zingine lakini sio yote hapo juu, au zifanye kwa njia rahisi sana. Mafundisho haya yatashughulikia 2 ya maswala ya kukata magogo mara nyingi na kama bonasi inakupa njia ya kuchora data yako bila kutumia huduma ya wingu. Unaweza kutumia kitu kizima au kuvuta vipande na vipande na kuzibadilisha kuwa mradi wako mwenyewe.

Hatua ya 1: Zana na Vifaa

Zana na Vifaa
Zana na Vifaa

Mfano huu uko katika Python kwa hivyo itaendelea, na vifaa vinaweza kutumika, OS yoyote ikiwa ni pamoja na Mac, PC, Linux na Raspberry Pi.

Kwa hivyo kutumia hii inayoweza kufundishwa unachohitaji ni mazingira ya Python 3.6, na pakua nambari iliyoambatanishwa. Baada ya kutumia nambari niliyoweka, unaweza kuibadilisha kwa majaribio yako mwenyewe. Kama ilivyo kawaida na Python unaweza kuhitaji kuongeza vifurushi / moduli ili kila kitu kifanye kazi. Mazingira yangu ya Spyder huja na sehemu zote zinazohitajika mahali hapo (tazama: Maoni yanayoweza kupangiliwa na Grafu na Kuharibu Screen ya Python). Unapoanza kutazama ujumbe wowote wa hitilafu watakujulisha juu ya sehemu zozote zinazokosekana kwenye mazingira yako.

Hatua mbili zifuatazo zitakuambia jinsi ya kujenga na kujaribu jaribio lako mwenyewe, lakini labda ni bora kusubiri hadi uanze majaribio yaliyojumuishwa kabla ya kujaribu yako mwenyewe.

Ili kuelewa nambari utahitaji kuwa na uzoefu kidogo na Chatu inayolenga kitu, kuelezea hiyo ni zaidi ya upeo wa hii inayoweza kufundishwa, lakini Google inapaswa kukupa msaada wowote ambao unaweza kuhitaji.

Kumbuka nambari: (Nambari katika GitHub Unaweza kuingia kutazama, labda kwenye dirisha lingine, kwa kubonyeza mara 2 tu) sasa iko kwenye Python 3.6, kwa hivyo kuwa na 3.6 itakuwa bora. Toleo la zamani la nambari liko hapa kwenye viungo hapa chini.

Hatua ya 2: Kuunda Jaribio

Kujenga Jaribio
Kujenga Jaribio

Kuna hatua tatu za programu (na mistari) katika kujenga jaribio. Kila jaribio ni kazi katika kitu cha LoggingSim kwenye faili simulate_logging.py. Hebu tuangalie jaribio 1 (tu grafu ya kwanza) ambayo tutatumia katika hatua inayofuata:

def majaribio_with_sample_rate (binafsi):

chapa "" "Jaribu na Viwango vya Mfano Kuangalia viwango tofauti vya sampuli kwa kubadilisha delta T" "" self.start_plot (plot_title = "Viwango vya Sampuli - Sehemu ya 1/3: Delta T = 1.0") self.add_sensor_data (name = "dt = 1. ", amplitude = 1., sauti_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()

Kila jaribio limeandikwa kama kazi yake mwenyewe kwa hivyo tuna mstari unaofafanua kazi (jaribio la def…..)

Mstari unaofuata, usio wa maoni, (start_plot (….) Huunda kitu cha jaribio na kukipa jina.

Mstari unaofuata, usio wa maoni, (add_sensor_data (…) umegawanywa katika mistari kadhaa. Inafananisha sensa inayopima ishara na uwezekano wa kelele na usindikaji fulani. Hoja za kazi ni kama ifuatavyo:

  • jina: jina lililowekwa kwenye grafu ya mwisho ili kutambua data
  • amplitude: ishara ni kubwa kiasi gani, tutatumia kila mara amplitude ya 1. katika hii inayoweza kufundishwa.
  • kelele_ya sauti: kelele ni kubwa kiasi gani, 0. hakuna kelele, tutaanza hapa.
  • delta_t: wakati kati ya vipimo, hudhibiti kiwango cha sampuli.
  • max_t: wakati wa juu zaidi wa kukusanya data, tutatumia 10 kila wakati katika hii inayoweza kufundishwa.
  • run_ave: usindikaji kwa kutumia wastani wa kukimbia, 0 inamaanisha hakuna usindikaji.
  • trigger_value: usindikaji kwa kutumia kuchochea, 0 inamaanisha hakuna usindikaji

laini ya mwisho, isiyo ya maoni, (self.show_plot ……) inaonyesha grafu.

Ili kufanya mambo kuwa ngumu zaidi unaweza kuwa na mistari mingi kwenye grafu au grafu nyingi katika jaribio, hii inapaswa kuwa wazi kutoka kwa majaribio yanayofuata.

Hatua ya 3: Kuendesha Jaribio

Hii ndio nambari ya kuendesha jaribio. Kama kawaida katika Python imewekwa mwisho wa faili.

sim_logging = LoggingSim ()

sim_logging.experiment_with_sample_rate ()

Hii ni mistari 2 tu:

  • Unda simulator ya kukata miti (LoggingSim ())
  • Endesha (sim_logging.experiment_with_sample_rate ())

Katika nambari iliyopakuliwa nina mistari machache zaidi na maoni, inapaswa kuwa rahisi kugundua.

Hatua ya 4: Jaribio: Kiwango cha Mfano

Jaribio: Kiwango cha Mfano
Jaribio: Kiwango cha Mfano
Jaribio: Kiwango cha Mfano
Jaribio: Kiwango cha Mfano
Jaribio: Kiwango cha Mfano
Jaribio: Kiwango cha Mfano

Simulator, kama imewekwa hapa, kila wakati hutoa wimbi laini laini la saizi ya 1. Kwa jaribio hili tutachanganya na kiwango cha sampuli, kama ilivyobadilishwa na delta_t, tofauti ya wakati kati ya sampuli. Hatutakuwa na kelele au usindikaji mwingine. Nambari hiyo hutumia viwango vya sampuli 3 (delta_t = 1.0, 0.1 na 0.01.) Kwa kuwa grafu zinaanguka juu ya kila mmoja jaribio limewekwa ili kutoa grafu 3 tofauti. Grafu zinazosababishwa ni picha za hatua hii.

def majaribio_with_sample_rate (binafsi):

chapa "" "Jaribu na Viwango vya Mfano Kuangalia viwango tofauti vya sampuli kwa kubadilisha delta T" "" self.start_plot (plot_title = "Jaribio la Viwango vya Sampuli 1/3: Delta T = 1.0") self.add_sensor_data (jina = "dt = 1. ", amplitude = 1., sauti_amp =.0, delta_t = 1., max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------- -------------------------- T = 0.1 ") self.add_sensor_data (jina =" dt = 1. ", amplitude = 1., noise_amp =.0, delta_t = 0.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () # ------------------------------------------------ binafsi start_plot (plot_title = "Sampuli ya Viwango vya Sampuli 3/3: Delta T = 0.01") self.add_sensor_data (name = "dt = 1.", amplitude = 1., noise_amp =.0, delta_t = 0.01, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()

Ili kuiendesha tumia laini: sim_logging.experiment_with_sample_rate ()

Hitimisho linalowezekana:

  • Kiwango cha chini sana cha sampuli ni mbaya sana.
  • Viwango vya juu mara nyingi ni bora.

(Nambari ya Python 3.6 kwenye kiunga cha GitHub hapa chini kwa kufundisha, 2.7)

Hatua ya 5: Jaribio: Kuonyesha Kelele

Jaribio: Kuonyesha Kelele
Jaribio: Kuonyesha Kelele

Katika jaribio hili tunaweka ishara sawa, tumia kiwango cha wastani cha sampuli, na tuna kelele nyingi tofauti (noise_amp =.0,.1, 1.0.) Endesha na: sim_logging.experiment_showing_noise (). Pato ni grafu moja na mistari 3.

Hitimisho linalowezekana:

Kelele hufanya iwe ngumu kuona ishara, punguza ikiwa unaweza

Nambari:

# ------------------------------------------------

def experiment_showing_noise (self): chapa "" "Jaribio la kuonyesha kelele Kuangalia kelele tofauti kwa kubadilisha ukubwa wa kelele." ", amplitude = 1., noise_amp =.0, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (jina =" kelele = 0.1 ", amplitude = 1., sauti_amp =. 1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (name = "noise = 1.0", amplitude = 1., noise_amp = 1., delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot ()

Hatua ya 6: Jaribio: Punguza kelele na Wastani wa Kusonga

Jaribio: Punguza kelele na Wastani wa Kusonga
Jaribio: Punguza kelele na Wastani wa Kusonga
Jaribio: Punguza kelele na Wastani wa Kusonga
Jaribio: Punguza kelele na Wastani wa Kusonga

Wastani wa kusonga (kwa mfano na urefu wa 8) huchukua vipimo 8 vya mwisho na kuzipima wastani. Ikiwa kelele ni ya nasibu tunatumai itakuwa wastani wa karibu 0. Tumia jaribio na: sim_logging.experiment_showing_noise (). Pato grafu moja.

Hitimisho linalowezekana:

  • Wastani wa kusonga huondoa kelele nyingi
  • Kadiri wastani wa kusonga unavyopungua ndivyo upunguzaji wa kelele zaidi
  • Wastani wa kusonga kwa muda mrefu unaweza kupunguza na kupotosha ishara

Nambari:

# ------------------------------------------------

def experiment_with_moving_average (self): chapa "" "Jaribio la KusongaWastani Kuangalia wastani wa Kusonga tofauti kwa kubadilisha urefu. Wote wana kelele sawa." "" # ------------------ ----------------------.add_sensor_data (jina = "ave len = 0", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.show_plot () self.start_plot (plot_title) = "Kusonga Wastani-Sehemu ya 2/2: Len 8 na 32") self.add_sensor_data (jina = "ave len = 8", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 8, trigger_value = 0) self.add_sensor_data (jina = "ave len = 32", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 32, trigger_value = 0) self.show_plot ()

Hatua ya 7: Jaribio: Kusonga Wastani na Kiwango cha Sampuli

Jaribio: Kusonga Wastani na Kiwango cha Sampuli
Jaribio: Kusonga Wastani na Kiwango cha Sampuli

Katika jaribio hili tunalinganisha ishara mbichi na kelele na tofauti 2 tofauti juu ya kupunguza kelele.

  1. Kiwango cha sampuli ya kati na wastani wa kukimbia
  2. Kiwango cha juu cha sampuli na wastani wa urefu mrefu

Endesha na: sim_logging …… Pato ni grafu moja. Nadhani ni wazi kwamba # 2 inafanya kazi bora kupunguza kelele ili tuweze kuhitimisha kuwa:

Kiwango cha juu cha sampuli na wastani wa urefu wa juu ni nzuri

Lakini lazima ukumbuke kuwa kuna gharama. # 2 inachukua usindikaji zaidi na husababisha data nyingi zaidi kuokolewa. Gharama inaweza kuwa ya thamani au haifai. Katika jaribio linalofuata tutaongeza kichocheo, kifaa cha kupunguza idadi ya data iliyohifadhiwa.

Nambari:

def majaribio_na_kusonga_ wastani_na_sampuli_pima (binafsi):

chapisha "" "Jaribio la Kusonga Wastani na Kiwango cha Sampuli, dt, wastani wa kukimbia kuwa tofauti" "" # ---------------------------- -------------- 0 ", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 0, trigger_value = 0) self.add_sensor_data (jina =" dt =. 1 ra = 10 trig = 0 ", amplitude = 1., noise_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (jina = "dt =.01 ra = 100 trig = 0", amplitude = 1., sauti_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value = 0) self.show_plot ()

Hatua ya 8: Jaribio: Kuingia na Trigger

Jaribio: Kuingia na Trigger
Jaribio: Kuingia na Trigger

Katika jaribio hili tunaongeza kichocheo. Kwanza, ninamaanisha nini na kichocheo? Kichocheo ni mbinu ambapo tunakusanya data lakini tuihifadhi baada ya mabadiliko kadhaa kubadilika kwa kiwango kikubwa. Katika majaribio haya niliweka kichocheo kwa ubadilishaji wa saa (x axis). Kwa kutumia kichochezi ninaweza kuchukua kiwango cha juu cha data kutoka kwa sampuli ya haraka na kuipunguza kwa data inayofaa zaidi. Umuhimu ni muhimu na viwango vya juu vya sampuli na wastani wa mbio ndefu.

Nimechukua # 2 laini kutoka kwa jaribio la mwisho ambalo lilikuwa "nzuri" kichocheo kilichoongezwa. Endesha na: sim_logging …… Pato ni grafu moja, x mistari.

Nini kinatokea? Tunapata njama "nzuri" na idadi inayofaa ya data (sawa na # 1). Kumekuwa na gharama katika usindikaji wa hali ya juu. Kwa ujumla, hata hivyo, matokeo ni sawa na # 1 kiwango cha chini cha sampuli na uchujaji mdogo. Unaweza kuhitimisha:

  • Wastani wa kukimbia kwa muda mrefu na kuchochea kunaweza kutoa upunguzaji mzuri wa kelele na idadi inayofaa ya data.
  • Usindikaji wa ziada hauwezi kutoa matokeo bora zaidi na huja na gharama.

Nambari:

# ------------------------------------------------

def experiment_with_trigger (self): chapisha "" "Jaribio la Kuchochea, dt, wastani wa kukimbia na kuchochea yote kuwa tofauti" "" # ----------------------- -----------.1 ra = 10, trig = 0 ", amplitude = 1., sauti_amp =.1, delta_t =.1, max_t = 10., run_ave = 10, trigger_value = 0) self.add_sensor_data (name =" dt =.01 ra = 100, trig =.1 ", amplitude = 1., sauti_amp =.1, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =. 1) self.show_plot ()

=

Hatua ya 9: Jaribio: Kuingia na Trigger - Kelele ya sauti

Jaribio: Kuingia na Trigger - Kelele ya sauti
Jaribio: Kuingia na Trigger - Kelele ya sauti

Wacha tuchukue jaribio sawa na hatua ya mwisho na tuongeze kelele. Endesha na: sim_logging …… Pato ni grafu moja, mistari 2.

Sasa usindikaji wa ziada unaonekana kuwa wa thamani zaidi wakati. Hitimisho linalofaa hapa linaweza kuwa:

Kuchukua kiasi na aina ya usindikaji wa kupunguza kelele inategemea ishara yako na kelele

Nambari:

def majaribio_ na_trigger_louder_noise (ubinafsi):

chapa "" "Kelele kali kuliko jaribio la awali" "self.start_plot (plot_title =" Jaribio la Kelele ya Kuchochea -Uzito ") self.add_sensor_data (name ="… dt =.1 ra = 10 ", amplitude = 1., kelele_mpira sauti_amp =.5, delta_t =.01, max_t = 10., run_ave = 100, trigger_value =.1) self.show_plot ()

Hatua ya 10: Fanya Majaribio Yako Mwenyewe

Fanya Majaribio Yako Mwenyewe
Fanya Majaribio Yako Mwenyewe

Kwa wakati huu natumahi unaona kuwa mbinu katika hii inayoweza kufundishwa inaweza kuwa na manufaa katika ukataji wa data, lakini kwamba lazima pia zitumiwe na mawazo fulani. Kujaribu nao kunaweza kusaidia mchakato huo.

Maneno mengine juu ya majaribio na vitu ambavyo unaweza kutazama:

  • Mawimbi ya Sine sio tu aina ya ishara ya kuvutia, jaribu zingine, mawimbi mengine au njia panda au…..
  • Nilitumia usambazaji wa kawaida kwa kelele, kuna aina nyingi za kelele; unapaswa kuzingatia wengine
  • Wastani wa kukimbia ni njia rahisi, lakini sio njia pekee ya kuangalia kelele

Kumbuka: picha za magogo kutoka Wikipedia.

Hatua ya 11: Kutumia Mbinu katika Programu yako ya Uwekaji miti

Kutumia Mbinu katika Programu Yako ya Kuingia
Kutumia Mbinu katika Programu Yako ya Kuingia

Nambari yangu imeelekezwa kwa kitu na usindikaji wa wastani wa kutumia na kichocheo unaweza kunakiliwa tu katika mazingira yako ya Python kisha utumiwe. Vitu ni:

  • DataTrigger katika data_trigger.py
  • Kusonga Wastani wa kusonga_ wastani.py

Kitu changu kuu LoggingSim in simulate_logging.py inapaswa kukupa mfano mzuri wa jinsi ya kutumia. Ikiwa unatumia lugha nyingine unaweza kusoma nambari yangu na kutekeleza katika lugha yako.

Nambari hii inaweza kuwapa mradi wako ukataji data bora, jaribu.

Grafu hapo juu imetoka kwa Grafu Nguvu yako ya jua na russ_hensel ambayo hutumia kitu sawa cha wastani cha kukimbia.

Ilipendekeza: