Mündəricat:

Avtomatik Yerləşdirmə Sistemi: 11 addım
Avtomatik Yerləşdirmə Sistemi: 11 addım

Video: Avtomatik Yerləşdirmə Sistemi: 11 addım

Video: Avtomatik Yerləşdirmə Sistemi: 11 addım
Video: Beelink GK Mini часть 2 - Autoboot, Debian 11, Supervised Home Assistant 2024, Noyabr
Anonim
Avtomatik Yerləşdirmə Sistemi Yerli Vazamentos
Avtomatik Yerləşdirmə Sistemi Yerli Vazamentos

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

Lista De Materiais
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

Image
Image

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

Obtenção Do Áudio
Obtenção Do Áudio

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)

Do Arduino DUE -ni konfiqurasiya edin (C dili)
Do Arduino DUE -ni konfiqurasiya edin (C dili)

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

Das Tecnologias interfeysi
Das Tecnologias interfeysi

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)

DRAGONBOARD 410c (Python) üçün konfiqurasiya
DRAGONBOARD 410c (Python) üçün konfiqurasiya

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

INTERPRETAÇU DOS ARQUIVOS DE AUDIO
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

Vizual Sinal
Vizual Sinal
Vizual Sinal
Vizual Sinal
Vizual Sinal
Vizual 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

Algoritmo Em R Para Extração Das Xüsusiyyətləri Dos Dados
Algoritmo Em R Para Extração Das Xüsusiyyətləri Dos Dados
Algoritmo Em R Para Extração Das Xüsusiyyətləri Dos Dados
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

Neyronu bərpa edin
Neyronu bərpa 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ə: