Mündəricat:
- Addım 1: Lista De Materiais
- Addım 2: Adaptação Mecânica
- Addım 3: Acionamento Dos Motores
- Addım 4: Obtenção Do Áudio
- Addım 5: Arduino DUE -ni konfiqurasiya edin (linguagem C)
- Addım 6: Interfaceamento Das Tecnologias
- Addım 7: Da DRAGONBOARD 410c konfiqurasiya edin (Python)
- Addım 8: INTERPRETAÇU DOS ARQUIVOS DE AUDIO
- Addım 9: Analise Visual Do Sinal
- Addım 10: Algoritmo Em R Para Extração Das Xüsusiyyətləri Dos Dados
- Addım 11: Sinirdən istifadə edin
Video: Avtomatik Yerləşdirmə Sistemi: 11 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bu proqramlar bir -birindən asılı olmayaraq, hər hansı bir funksiyanı yerinə yetirməklə, sensorlar ilə təchiz olunmaqla, təkbaşına istifadə etməklə, lokalizasiya etməklə, yerli məlumatların emal edilməsi ilə əlaqədardır. uma tululação.
DRAGONBOARD 410c qurmaq üçün proqramlar hazırlamaq lazımdır. Süni və inteqrasiya olunmuş proseslərin heç biri ilə tanış olmadıqda, onlara heç bir köməklik göstərilmir.
Hackaton Qualcomm -un heç bir problemi yoxdur, TecnoFACENS və Facenade de Engenharia de Sorocaba (FACENS), layihələrin hazırlanmasında ən böyük təcrübə Eneo Juliano Bovino, Felipe Xavier, Lucas de Sousa, Rodriges Sousa, Rodriges. Gomes Polo və Ronaldo P. Gomes Polo. Daniel de Castro Pacheco, Newton Paiva de Belo Horizonte Universidade məktəblərində təhsil almaq üçün bir layihə hazırladı. FACENS, Lucas Nunes Monteiro və Felipe Crispim və Silva Salvagnini -nin ən yüksək səviyyəli proqramları ilə tanış ola bilərsiniz.
Addım 1: Lista De Materiais
Layihə hazırlandıqdan sonra istifadə edilə bilər:
1 Arduino Vaxtı
1 Dragonboard 410c
2 motor sürücü üçün sürücülər:
4 Transistorlar BC548
4 Diodos 1n4007
4 müqavimət 4k7Ω ¼ W
1 Sürücü üçün servo motor yarışması:
1 Transistorlar BC548
1 Diod 1N4007
1 4k7Ω ¼ W müqavimət göstərir
1 siçan USB
1 USB Teclado
1 Monitor
1 Cabo HDMI
1 Robô De Esteiras - Plataforma Zumo
1 Cremalheira və ingilis dilində mini dispozisiya
1 Servo motor 9g
Addım 2: Adaptação Mecânica
Sensor piezoelétrico, ehtiyac və ya istəklər üçün istifadə edərək, bir çox problemlərin həlli, uyğunlaşdırma, istehsal və istehsal prosesinin 3D formatında qurulmasını təmin edir. sürətləndirmək, düzəltmək və ya istifadə etmək, üzünüzü bağlamaq, üzünüzü bağlamaq.
Addım 3: Acionamento Dos Motores
Sürücülər, ZUMO və ya digər avtomobillərin sürücüsünü idarə etmək üçün sürücülərin sürücüsünü və ya sürücüsünü idarə etmək üçün lazım olan hər şeyi hazırlayırlar. Sürücü üçün servo mühərrikin sürücüsü.
Addım 4: Obtenção Do Áudio
Səs -küy, səs -küy və səs -küylə mübarizə aparan şirkətlər, TCC de Engenharia Mecatrônica və Lucas Nunes Monteiro e Felipe C. məzunları ilə əlaqəli bütün mövzularda bir -birindən daha çox məlumat əldə edə bilərsiniz. e -poçt [email protected].
İstifadə olunan sensorlar cihazın elektrik enerjisi ilə təchiz olunmasını və gücləndirilməsini təmin edir.
100Hz və 800Hz aralığında bir tezlik kimi. Necə ki, tez -tez əlaqə qurmaq üçün 3 kHz tezlikdə tez -tez əlaqə qurmaq üçün sensorlar da istifadə edilə bilər.
Arduino DUE ilə əlaqəli bir məlumat əldə edin.
Addım 5: Arduino DUE -ni konfiqurasiya edin (linguagem C)
Devos, böyük ölçüdə 3000 -dən çox proqrama, 32 -bitə qədər və ya DRAGONBOARD 410c -də, algoritmlərin işlənib hazırlanması üçün, 32 bitdən çox məlumat əldə etməyə imkan verir. bu proses, eyni zamanda, Shield -ın interfeysi ilə, DRAGONBOARD 410c -də Grove Görmə Sensorunun quraşdırılması, ATmega 328 -in mikrokontrolörünün quraşdırılması və ya işlənməsi ilə əlaqədardır.
QUALCOMM DRAGONBOARD 410c -in komunik seriallar vasitəsi ilə ən çox istifadə edilə bilən parametrləri olan Arduino DUE.
Arduino foram açılmadığı üçün:
Şəxsi həyatını idarə etmək;
DRAGONBOARD 410c üçün məlumat ötürülməsi;
Proqram hazırlayın:
#daxil edin #müəyyən edin Numb_Sample 3000 #DAC_Input A0 təyin edin
#SERVO 7 təyin edin
#define PosServoMin 4 #define PosServoMax 6 #define Period 60 işarəsiz int Scont = 0, SNow = PosServoMin; imzasız uzun int DAC [Numb_Sample], ind = Numb_Sample; boş TC3_Handler () {TC_GetStatus (TC1, 0); əgər (ind <Numb_Sample) DAC [ind ++] = analogRead (DAC_Input); əgər (Scont
1); // 50% iş dövrü
TC_SetRC (tc, kanal, rc); TC_Start (tc, kanal); tc-> TC_CHANNEL [kanal]. TC_IER = TC_IER_CPCS | TC_IER_CPAS; // habilita os registradores tc-> TC_CHANNEL [kanal]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // qeydiyyatdan keçənlər NVIC_EnableIRQ (irq); // habilita interrupção}
boş quraşdırma ()
{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // Taymeri işə salın // TC_Stop (TC1, 0); pinMode (SERVO, ÇIXIŞ); }
boşluq döngəsi ()
{/*// while (! Serial.available ()); char rc; // = Serial.read (); int indisi = 0; if (rc == 0) {while (! Serial.available ()); rc = Serial.read (); keçid (rc) {hal 1: indeks = 0; while (! Serial.available ()); while ((rc = Serial.read ())! = 0xFF) {indice << = 8; indeks += rc; while (! Serial.available ()); } Serial.print (0); Serial çapı (2); SendNumber (DAC [indice]); Serial. çap (0xFF); fasilə; hal 3: while (! Serial.available ()); if ((Serial.read ()) == 0xFF) {SNow = PosServoMax; gecikmə (500); ind = 0; // TC_Start (TC1, 0); while (ind <Numb_Sample); // TC_Stop (TC1, 0); Qar = PosServoMin; gecikmə (500); Serial. çap (0); Serial çapı (4); Serial. çap (0xFF); } fasilə; }} başqa halda (rc == '2') {Serial.print ("Servo Motoru / n Test et"); while (! Serial.available ()); rc = Serial.read (); if (rc == '1') {Serial.print ("Mode 1 / n"); Qar = PosServoMax; } əgər (rc == '2') {Serial.print ("Mode 2 / n"); Qar = PosServoMin; }} */ SNow = PosServoMax; gecikmə (100); Qar = PosServoMin; gecikmə (100); }
Addım 6: Interfaceamento Das Tecnologias
DRAGONBOARD 410c ilə əlaqədar Arduino DUE ilə əlaqəli bütün proqramlar, bir interfeys və ya digər funksiyanı yerinə yetirmək üçün USB CDC və ya Arduino DUE ea DRAGONBOARD üçün bir interfeys yaratmağa imkan verir. KERNEL və DRAGONBOARD 410c -nin yenidən qurulması üçün lazım olan hər şeyi tez bir zamanda əldə edə bilərsiniz.
Addım 7: Da DRAGONBOARD 410c konfiqurasiya edin (Python)
Fərqli bir şəkildə Arduino DUE ilə əlaqəli konfiqurasiya etmək və ya dəyişdirmək üçün bu məlumatları əldə edə bilərsiniz. Segue código abaixo.
Müşahidələr: heç bir şəkildə istifadə edilmir, heç bir funksiya yoxdur və ya heç bir problem yoxdur. Bu, USB və ya DRAGONBOARD 410-un KERNEL-in yenidən qurulması üçün lazım olan bütün məlumatların birləşdirilməsi üçün bir USB interfeysi ilə əlaqədardır.
pd import olaraq serial idxal pandalar nd olaraq numpy
# Konfiqurasiya serialı
ser = serial. Serial (port = '/dev/ttyAMC0', #tty96B0 ', baudrate = 250000, parite = serial. PARITY_NONE, stopbits = serial. STOPBITS_ONE, bayt = serial. EIGHTBITS)
ser.isOpen ()
print ('Aşağıdakı əmrlərinizi daxil edin. / r / nTətbiqdən çıxmaq üçün "exit" daxil edin.')
giriş = 1
while 1: input = input (">>") if if == 'exit': ser.close () exit () elif input == 'read': ser.write (0) # Envia o comando para o Arduino DUE yazmaq (1) # Arduino DUE ilə əlaqəli məlumatların təhvil verilməsi
siyahı =
i üçündür (3000):
ser.write (i/256) ser.write ((i <0: out = ser.read (2) if (out == 0x0002): atual = 0 c = ser.read (1) while (c! = 0xFF)): atual << 8 atual += cc = ser.read (1) lista.append (atual)
Addım 8: INTERPRETAÇU DOS ARQUIVOS DE AUDIO
Həqiqətən də, WAV formatında heç bir əlaqə qurmaq mümkün olmayan, sensorlar və proqramlar, TCC və ya əlaqələndirici proqramlar, rəqəmsal dəyərlər və sənədlərin alqı -satqısı üçün lazım olan hər hansı bir əlaqə yoxdur.. PYTHON 3 -dən sonra WAV və ya CSV -dən istifadə etməklə bu proqramlar arasında danışıqlar aparmaq mümkün olacaq. Yükləmə proqramını yükləyin və ya yükləyin.
Sistemin funksiyalarını yerinə yetirmək üçün lazım olan hər hansı bir algoritm, Arduino DUE və ya digər sənədlərin sayını dəyişdirmək üçün lazım olan hər şeyi hazırlayın.
# kodlaşdırma: utf-8
Csv üçün # audio danışıqlar aparılır
# MÜDÜLOS UTILIZADOS
idxal dalğası idxalı np kimi iddialı pandalar pd idp matplotlib.pyplot kimi plt
# FUNÇÃO PARA DÖNDÜRÜCÜ WAV EM DADOS ESPECTRO E SALVAR CSV
def audio_to_csv (file_name): wave_file = wave.open (file_name+'. wav', 'rb') data_size = wave_file.getnframes () sample_rate = wave_file.getframerate () time_step = 1/sample_rate waveData = wave_file.readframes 1 (data_sayfası)) siqnal = np.fromstring (waveData, dtype = 'int32') Zaman = np.linspace (başlanğıc = 0, dayan = data_size/sample_rate, num = data_size, son nöqtə = Doğru) df = pd.concat ([pd. DataFrame (siqnal), pd. DataFrame (Zaman)], ox = 1) df.to_csv (fayl_adı + '.csv', indeks = Yanlış) qaytar df
# CARREGANDO DATA Çərçivəsi COM OS DADOS AUDIO
file_name = 'Solo_com_Vazamento' df_vazamento = audio_to_csv (file_name) df_vazamento.columns = ['amp', 'time'] file_name = 'Solo_sem_Vazamento' df_sem_vazamento = audio_to_csv (file_name_) 'df_ [amp_name]
# GRÁFICO DO ESPECTRO DE AUDIO
rəqəm, (ax1, ax2) = plt.subplots (nrows = 2, ncols = 1, figsize = (20, 10)) ax1.plot (df_vazamento ['time'], df_vazamento ['amp']) ax1.set_title ('Solo com Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'bold'}) ax1.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax1.set_ylim ([-4e8, 4e8]) ax2.plot (df_sem_vazamento ['vaxt'], df_sem_vazamento ['amp']) ax2.set_title ('Solo sem Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'qalın' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax2.set_ylim ([-4e8, 4e8]) rəqəm.tight_layout (h_pad = 5) plt.show ()
Addım 9: Analise Visual Do Sinal
Comments PYTHON 3 -də Fourier -in realizasiyası, tez -tez dəyişikliklər, genişlənmə və genişləndirmə kimi bir çox dəyişikliklər etmək, həm də tez -tez etmək lazımdır. Vizual olaraq, Fourier -in ən çox öyrənilənləri və mövcud olanları müəyyənləşdirmək də mümkündür. Şəxsi məlumatların avtomatik təhlili alqoritmlərin avtomatlaşdırılması üçün istifadə edilə bilər.
100Hz və 800Hz aralığında məhdudiyyətlər var, bu da tezlik və tezlik arasındakı fərqi göstərir.
# kodlaşdırma: utf-8# Fourier transformasiya prosesində istifadə olunur
pd kimi idxal pp kimi idp dalğası kimi matplotlib idxal dalğası kimi plt# Funcão que a transformasiya de Fourier və plour os for a láfise for Fourier (df_list): Fs = 44100; # Hz Ts = 1.0/Fs taxa de amostragem; # Intervalo de amostragem y = pd.concat (df_list) t = y ['time'] # Vetor de tempos y = y ['amp'] # Vetor de amplitudes n = len (y) # Sinal k = np ilə əlaqə qurun. arange (n) T = n/Fs frq = k/T frq = frq [interval (n // 2)] Y = np.fft.fft (y)/n Y = Y [interval (n // 2)] tmp = pd. DataFrame () tmp ['amp'] = abs (Y) tmp ['freq'] = frq max_lim = max (tmp ['amp'] [(tmp ['freq']> = 100) & (tmp ['freq'] <= 800)]) fig, ax = plt.subplots (2, 1, figsize = (20, 10)) ax [0].plot (t, y) ax [0].set_xlabel ('Zaman') ax [0].set_ylabel ('Genlik') axt [1].slot (frq, abs (Y), 'r') ax [1].set_xlim ([100, 800]) ax [1].set_ylim ([0, max_lim]) ax [1].set_xlabel ('Freq (Hz)') ax [1].set_ylabel ('| Y (freq) |') plt.show () return frq, abs (Y)# CSV və ya Fourier üçün read_csv (fayl_adı, başlanğıc, son) funksiyalarının yerinə yetirilməsi: df = pd.read_csv (file_name + '.csv') df.columns = ['amp', ' vaxt '] delta = final-init əgər init*44100> len (df) və ya final*44100> len (df): init = (len (df)/44100) -delta, əgər init = 100) & (df [' freq '] <= 800)] mx = sıralanır (df [' amp ']) çap ("Média das amplitudes:", np.round (np.mean (mx)))) print ("Percentuais em relação a média das amplitudes.") print ("100 maiores amplitudes", np.mean (mx [-100):]) // df ['amp']. orta ()*100, "%", sep = "") çap ("50 maiores genlik:", np.mean (mx [-50:]) // df ['amp']. ortalama ()*100, "%", sep = "") çap ("10 maiores amplitüd:", np.mean (mx [-10:]) // df ['amp']. ortalama ()*100, "%", sep = "") çap ("Maior genlik:", np.mean (mx [-1:]) // df ['amp']. orta ()*100, " %", sep =" ") read_csv ('Solo_com_Vazamento', 2, 10) # Exempplo de gráficos for vazamentoread_csv ('Solo_sem_Vazamento', 2, 10) # Exemplo de gráficos for sem vazamento
Addım 10: Algoritmo Em R Para Extração Das Xüsusiyyətləri Dos Dados
Alqoritmlərin həyata keçirilməsində istifadə olunan xüsusiyyətlər və xüsusiyyətlər (xüsusiyyətlər) ən çox görülən işdir.
Alqoritmlər nə vaxt həyata keçiriləcəyini öyrənmək üçün lazım olan bütün məlumatları əldə etmək və ya öyrənmək lazım olduqda, sinir sistemində hər hansı bir problemin həlli mümkün olur.
Əməliyyat sistemini idarə etmək üçün bu proqramlar bir -birindən fərqlidir, bu da özünəməxsus identifikasiyalara və xüsusiyyətlərə malikdir.
Əmlak Telefon Aksesuar Maşın Mebel Geyim Məlumat İstifadəçilər üçün ən çox tələb olunan xüsusiyyətlərə malikdir.
GitHub -un heç bir əlaqəsi yoxdursa, heç bir əlaqəsi yoxdur, bu da layihə üçün xüsusi bir proqramdır.
Alqoritmlər və proqramlar üçün R Studio proqramlarını yükləyin.
Əlavə xüsusiyyətlər:
- Meanfreq: orta tezlik (kHz)
- sd: tezliyin standart sapması
- median: median tezlik (kHz)
- Q25: ilk kvantil (kHz)
- Q75: üçüncü kvantil (kHz)
- IQR: interquantile diapazonu (kHz -də)
- əyrilik: əyrilik (spesifik təsvirdəki qeydə baxın)
- kurt: kurtosis (specprop təsvirindəki qeydə baxın)
- sp: spektral entropiya
- sfm: spektral düzlük
- rejim: rejim tezliyi
- centroid: tezlik centroid (specprop bax)
- pikf: pik tezliyi (ən yüksək enerjili tezlik)
- Meanfun: akustik siqnal üzrə ölçülən əsas tezliyin ortalaması
- minfun: akustik siqnal üzrə ölçülən minimum əsas tezlik
- maxfun: akustik siqnal üzrə ölçülən maksimum fundamental tezlik
- meandom: akustik siqnalda ölçülən dominant tezliyin ortalaması
- mindom: akustik siqnalda ölçülən minimum dominant tezlik
- maxdom: akustik siqnalda ölçülən dominant tezliyin maksimumu
- dfrange: akustik siqnal üzrə ölçülən dominant tezlik diapazonu
- modindx: modulyasiya indeksi. Əsas tezliklərin bitişik ölçüləri arasındakı yığılmış mütləq fərq kimi hesablanır
- etiket: sızma və ya sızma olmadan
Algoritmo istifadə:
paketlər <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'siçanlar', 'e1071', 'rpart', 'xgboost', 'e1071') əgər (uzunluq (setdiff (paketlər, sıralar adları (yüklənmiş.paketlər ())))> 0) {install.packages (setdiff (paketlər, sıralar adları (yüklü.paketlər ())))}
kitabxana (tuneR)
kitabxana (seewave) kitabxana (caTools) kitabxana (rpart) kitabxana (rpart.plot) kitabxana (randomForest) kitabxana (warbleR) kitabxana (siçanlar) kitabxana (xgboost) kitabxana (e1071)
specan3 <- funksiyası (X, bp = c (0, 22), wl = 2048, eşik = 5, paralel = 1) { # Paralel emaldan istifadə etmək üçün: kitabxana (devtools), install_github ('nathanvan/parallelsugar') if (sinif (X) == "data.frame") {if (hamısı (c ("sound.files", "selec", "start", "end") % % colnames (X))) {start <- as.numerik (siyahıdan çıxma (X $ başlanğıc)) son <- as.sayısal (siyahıdan çıxma (X $ sonu)) səs.fayllar <- xarakterdən (siyahıdan (X $ səs.faylları)) selec <- xarakterdən (unlist (X $ selec))} başqa dur (yapışdır (yapışdır (c ("sound.files", "selec", "start", "end") [! (c ("sound.files", "selec", "başlanğıc", "son") % -də % colnames (X))], çökmə = ","), "məlumat çərçivəsində sütun (lar) tapılmadı"))} başqa dur ("X məlumat çərçivəsi deyil")) #əgər başlanğıc və ya son dayanacaqda NA varsa (əgər (is.na (c (son, başlanğıc))))) dayanarsa ("Başlanğıcda və/və ya sonda NAlar tapılarsa)" #sonu və ya başlanğıcı ədədi dayanma deyilsə if (all (class (end)! = "numeric" & class (start)! = "numeric")) stop ("'end' və 'selec' ədəd olmalıdır") #əgər son dayanacaqdan daha yüksək bir başlanğıc varsa any (end - start <0)) stop (paste ("Başlanğıc en -dən yüksəkdir d -də ", uzunluq (hansı (son - başlanğıc 20)) dayanacaq (yapışdır (uzunluq (bu (son - başlanğıc> 20)))," seçim (lər) 20 saniyədən artıqdır ")) seçimləri (show.error.messages = TRUE) #if bp vektor və ya uzunluq deyilsə! = 2 stop (! is.vector (bp)) stop ("'bp' uzunluğun ədədi vektoru olmalıdır") başqa {if (! length (bp) == 2) stop ("'bp' 2 uzunluğunun rəqəmsal vektoru olmalıdır")} bütün səs faylları fs <- list.files (path = getwd (), pattern = ".wav $") tapılmadığı təqdirdə #geri dönüş xəbərdarlığı ignore.case = TRUE) if (uzunluq (unikal (sound.files [(sound.files % in % fs)])))! = uzunluq (unikal (sound.files)))) cat (pasta (uzunluq (unikal (səs) fayllar))-uzunluq (unikal (sound.files [(sound.files % in % fs)])))), ".wav fayl (lar) tapılmadı")) #iş qovluğundakı səs fayllarının sayı və 0 dayanarsa d <- hansı (sound.files % ilə % fs) if (uzunluq (d) == 0) {stop (".wav faylları işçi qovluğunda deyil")} başqa {başlanğıc <- başlanğıc [d] son <- end [d] selec <- selec [d] sound.files <- sound.files [d]} # Əgər paralel ədədi deyilsə (! sayısal (paralel)) dayanarsa ("'paralel' olmalıdır 1 "uzunluğunun ədədi vektoru olun) əgər (varsa (! (paralel %% 1 == 0), paralel 1) {seçimlər (xəbərdarlıq = -1) əgər Windows ", requiredNamespace (" parallelsugar ", sakitcə = TRUE) == TRUE)) lapp <- function (X, FUN) parallelsugar:: mclapply (X, FUN, mc.cores = parallel) else if (Sys.info () [1] == "Windows")) {cat ("Windows istifadəçiləri paralel hesablama üçün 'parallelsugar' paketini yükləməlidirlər (indi bunu etmirsiniz!)") ") Lapp <- pbapply:: pblapply} başqa lapp <- funksiyası (X, FUN) paralel:: mclapply (X, FUN, mc.cores = paralel)} başqa lapp <- pbapply:: pblapply variantları (xəbərdarlıq = 0) əgər (paralel == 1) cat ("Akustik parametrlərin ölçülməsi:") x <- as.data.frame (lapp (1: uzunluq (başlanğıc), funksiya (i) {r <- tuneR:: readWave (file.path (getwd (), sound.files ), = dan) başla , to = sona , ədəd = "saniyə") b tavan ([email protected]/2000) - 1) b [2] < - tavan ([email protected]/2000) - 1 #frequency spektr analizi songspec <- seewave:: spec (r, f = [email protected], plot = FALSE) analiz <- seewave:: specprop (songspec, f = [email protected], flim = c (0, 280/1000), süjet = FALSE) #parametrləri saxla orta - analiz $ QQ75 <- analiz $ QIQR <- analiz $ IQR/1000 əyrilik <- analiz $ skewness kurt <- analiz $ kurtosis sp.ent <- analiz $ sh sfm <- analiz $ sfm rejimi <- analiz $ rejimi/1000 centroid <- analiz $ cent/1000 #Amplituda zirvələri olan tezlik pikf <- 0 #seewave:: fpeaks (songspec, f = [email protected], wl = wl, nmax = 3, plot = FALSE) [1, 1] #Ff <- seewave:: fund (r, f = [email protected], ovlp = 50, eşik = eşik, fmax = 280, ylim = c (0, 280/1000), plot = FALSE, wl = wl) [, 2] orta əyləncə <-mənası (ff, na.rm = T) minfun <-min (ff, na.rm = T) maxfun <-max (ff, na.rm = T) #Dominant meyvə parametrləri y <- seewave:: dfreq (r, f = [email protected], wl = wl, ylim = c (0, 280/1000), ovlp = 0, plot = F, eşik = eşik, bandpass = b * 1000, fftw = TRUE) [, 2] meandom <- orta (y, na.rm = TRUE) mindom <- min (y, na.rm = TRUE) maxdom <- max (y, na.rm = TRUE) dfrange <- (maxdom- mindom) müddəti <- (end - start ) #modulyasiya indeksi hesablaması <j- (! olan) j üçün dəyişir. na (y))) {dəyiş < (dəyişikliklər, na.rm = T)/dfrange #qənaət nəticələrini qaytarın (c (müddəti, ortalamafreq, sd, median, Q25, Q75, IQR, əyri, kurt, sp.ent, sfm, rejim, centroid, pikf, orta əyləncə, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx))})) #nəticə adlarının sıralarını dəyişdirin (x) <- c ("müddəti", "Meanfreq", "sd", "median", "Q25", "Q75", "IQR", "skew", "kurt", "sp.ent", "sfm", "mode", "centroid", "peakf", "Meanfun", "minfun", "maxfun", "meandom", "mindom", "maxdom", "dfrange", "modindx") x <- data.frame (sound.files, selec, as.data.frame (t (x))) soyadları (x) [1: 2] <- c ("sound.files", "selec") satır adları (x) <- c (1: nrow (x)) return (x)}
processFolder <- function (folderName) { # Boş data.frame ilə başlayın. data <- data.frame () # Qovluqdakı faylların siyahısını alın. list <- list.files (folderName, '\. wav') # İşlənmək üçün data.frame-ə fayl siyahısı əlavə edin. for (fileName in list) {row <- data.frame (fileName, 0, 0, 20) data <- rbind (data, row)} # Sütun adlarını təyin edin. adlar (məlumatlar) <- c ('sound.files', 'selec', 'start', 'end') # İşlənmək üçün qovluğa keçin. setwd (folderName) # Faylları emal edin. akustika <- specan3 (data, paralel = 1) # Ana qovluğa qayıdın. setwd ('..') akustika}
gender <- function (filePath) {if (! exists ('genderBoosted')) {load ('model.bin')} # Quraşdırma yolları. currentPath <- getwd () fileName <- basename (filePath) yol <- dirname (filePath) # Dizini faylı oxumaq üçün təyin edin. setwd (yol) # Boş data.frame ilə başlayın. data <- data.frame (fileName, 0, 0, 20) # Sütun adlarını təyin edin. adlar (məlumatlar) <- c ('sound.files', 'selec', 'start', 'end') # İşlənən fayllar. akustika <- specan3 (data, paralel = 1) # Bərpa yolu. setwd (currentPath) proqnozu (genderCombo, newdata = akustika)}
# Məlumat yükləyin
sızma <- processFolder ('caminho para o pasta com nümunələri de áudio com vazamento') olmadan_leakage <- processFolder ('caminho para o pasta com nümunələri de áudio sem vazamento')
# Etiketləri təyin edin.
sızma $ etiket <- 1 olmadan_ sızıntı olmadan $ etiket <- 2 məlumat <- rbind (sızma, sızma olmadan) data $ etiket <- faktor (data $ etiket, etiketlər = c ('sızma', 'sızma')))
# İstifadə edilməmiş sütunları silin.
data $ duration <- NULL data $ sound.files <- NULL data $ selec <- NULL data $ peakf <- NULL
# NA olan sətirləri silin.
məlumatlar <- məlumatlar [tamamlanmış hallar (məlumatlar),]
# Csv verilənlər bazasını yazın.
write.csv (data, file = 'features.csv', sep = ',', row.names = F)
Addım 11: Sinirdən istifadə edin
Neyron sinir sistemini yenidən qurmaq, avtomatik tənzimləmək və avtomatik idarə etmək üçün istifadə edilə bilər.
MLP (Multilayer Perceptron) tipli bir sinir sistemi istifadə edildikdə, əvvəlcədən müəyyən bir sistemin quraşdırılması və ya dəyişdirilməsi üçün heç bir sistemin istifadə edilməməsi lazım olduğunu öyrənmək lazımdır.
Faydalı məlumatların əldə edilməsi üçün lazım olan bütün məlumatları əldə etmək çox çətin deyil, həm də ən çox maraqlandıran bir şeydir. Heç bir problem yoxlanılmadığı təqdirdə, bu, səthi xətlərin bağlanması ilə bağlı problemlərin həlli ilə əlaqədardır.
Sınaq testləri 100%-dən çox deyil, həm də bir neçə dəfə, həm də ən yaxşı testlər vasitəsilə həyata keçirilir.
Mövcud əməliyyat sistemini yenidən qurmaq üçün bu proqramlar yenidən qurulmalıdır. Alqı -satqı sistemləri heç bir şəkildə yoxlanılmadığı təqdirdə, real vaxt rejimində və ya alquma daxil olmaq üçün hər hansı bir modelləşdirmə və ya istifadə etmək mümkün deyil.
# kodlaşdırma: utf-8
pandaları pd olaraq idxal edin
sklearn.model_selection -dan np olaraq numpy idxal et train_test_split sklearn.neural_network -dən tts olaraq idxal MLPClassifier sklearn.metrics -dən MLP kimi import təsnifat_sportu sklearn.metriklərdən cr confusion_matrix -dən sm
# Leitura dos dados CSV edir
df = pd.read_csv ('features.csv') # Ayrı ayrı girişlər df_X = df [df.columns [: len (df.columns) -1] # Girişlər df_X = df_X
# Təcrübə üçün ayrı bir dad
X_train, X_test, Y_train, Y_test = tts (df_X, df_Y, test_size = 0.1)
# Criando rejimi sinir sistemini dəyişdirir
modelo = MLP (alpha = 0.0001, learning_rate_init = 0.0001, hidden_layer_sizes = (50, 50, 50, 50), max_iter = 10000, aktivasiya = 'tanh', çözücü = 'lbfgs')
# Treinando rejimi
modelo.fit (X_train, Y_train) nəticə = modelo.predict (X_test)
# İmprimindo nəticələr
report = cr (Y_test, nəticə) mat = cm (y_pred = nəticə, y_true = Y_test) çap ("Matriz de confusão") çap (mat, end = "\ n / n") çap ("Relatório de Classificação") çap (hesabat)
Tövsiyə:
UWB Yerləşdirmə Tüyü: 6 addım
UWB Localization Feather: Ultra-WideBand Feather, Decawave DWM1000 modulunu və ATSAMD21 ARM Cortex M0-ı Adafruit lələk form faktoruna daxil edir. DWM1000 modulu IEEE802.15.4-2011 UWB ilə uyğun olan, qapalı yerlərdə dəqiq yerləşdirmə qabiliyyətinə malik simsiz moduldur
RFID əsaslı seçmə və yerləşdirmə robotu: 4 addım
RFID əsaslı seçmə və yerləşdirmə robotu: Uzun illərdir ki, insanlar insan işlərini maşınlarla əvəz etməyə çalışırlar. Robotlar adlanan maşınlar insanlardan daha sürətli və daha təsirli olur. Robototexnika termini praktiki olaraq robot sistemlərinin istehsalı üçün öyrənilməsi, dizaynı və istifadəsi olaraq təyin olunur. Robotlar g
Arduino Əsas Seçim və Yerləşdirmə Robotu: 8 addım
Arduino Base Pick and Place Robotu: Tələbələrə daha geniş miqyaslı robot texnikasını sındırmaq və kiçik yerli istehsalların bankları pozmadan robotları proseslərində istifadə etmələrini təmin etmək üçün super ucuz (1000 dollardan aşağı) sənaye robot qolu hazırladım. İnşa etmək və qurmaq asandır
Ultrasonik əsaslı yerləşdirmə sistemi: 4 addım (şəkillərlə)
Ultrasonik Əsaslı Yerləşdirmə Sistemi: Arduino cihazları üçün tapdığım ultrasəs radarlarının bütün versiyaları (Arduino - Radar/Ultrasonik Detektor, Arduino Ultrasonik Radar Layihəsi) çox gözəl radarlardır, lakin hamısı "kor" dur. Demək istədiyim odur ki, radar nələrisə aşkarlayır, amma mən
Vokalist üçün Mikrofon Texnikası və Yerləşdirmə Məsləhətləri: 5 addım
Vokalist üçün Mikrofon Texnikası və Yerləşdirmə Məsləhətləri: Təcrübəsizlər üçün mikrofondan istifadə əvvəlcə olduqca asan bir əməliyyat kimi görünə bilər. Sadəcə yuxarıdakı yuvarlaq hissədə danışırsınız və ya mahnı oxuyursunuz və dinamiklərdən gözəl bir aydın və balanslı bir səs çıxacaq