Мазмұны:
- 1 -қадам: Lista De Materiais
- 2 -қадам: Adaptação Mecânica
- 3 -қадам: Acionamento Dos Motores
- 4 -қадам: Obtenção Do Áudio
- 5 -қадам: Do Arduino DUE конфигурациясы (C тілдік бағдарламасы)
- 6 -қадам: Das Tecnologias интерфейсі
- 7 -қадам: DRAGONBOARD 410c конфигурациясы (Python)
- 8 -қадам: INTERPRETAÇU DOS ARQUIVOS DE AUDIO
- 9 -қадам: Visual Do Sinal
- 10 -қадам: Algoritmo Em R Para Extração Das ерекшеліктері Dos Dados
- 11 -қадам: Нейронды қайтарыңыз
Бейне: Автоматты жүйе локализациясы: 11 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Бұл роботтар мен қондырғылардың біркелкі болуы, олардың сенсорлары пьезоэлектроникамен жабдықталуы, вибрачалардың жеке функциялары, локализацияның анықталуы, жүйенің анықтамасы, нейрондық жүйенің мүмкін еместігі. тубулачау.
DRAGONBOARD 410c алгоритмін орнатуға көмектесетін процесс. Қызметтер жаңартылған кезде, жасанды және интеграцияланған процестерге жауап беруге болады.
Hackaton Qualcomm жоқ жобалар, TecnoFACENS және Facenade de Engenharia de Sorocaba (FACENS), сондай -ақ дипломатты жобалау бойынша жобалар Eneo Juliano Bovino, Фелипе Ксавье, Лукас де Росе, Роджесос Росе. Гомес Поло мен Роналду П. Гомес Поло. Даниэль де Кастро Пачеко университетінің Ньютон Пейва -де -Бело -Горизонт университетінде оқуды жоспарлап отыр. FACENS, Lucas Nunes Monteiro және Felipe Crispim және Silva Salvagnini -дің дипломдық бағдарламалары.
1 -қадам: Lista De Materiais
Қарап шығатын болсақ:
1 Arduino мерзімі
1 айдаһар тақтасы 410c
2 драйверлер:
4 BC548 транзисторлары
4 Diodos 1n4007
4 резисторлар 4k7Ω ¼ W
1 Сервистік қозғалтқыш үшін жүргізуші:
1 BC548 транзисторлары
1 диод 1N4007
1 4k7Ω ¼ W қарсыласады
1 USB тінтуірі
1 USB Teclado
1 Монитор
1 HDMI кабелі
1 Робо Де Эстейрас - Платаформа Зумо
1 Cremalheira және ағылшын тіліндегі шағын диспозиция
1 Серво қозғалтқышы 9г
2 -қадам: Adaptação Mecânica
Ақпараттық сенсор пьезоэлектрикасы, сенсорлық позициялар, қажет болған жағдайда, сонымен қатар кремалейра, консенсфейс, консенс, анестадос, фаберма сияқты 3D форматында жасалынған құрылғы, сонымен қатар прото -де -трото сенсоры. орындау жылдамдығы, түзету және жаңарту, бет-әлпетті пайдалану, бейнені сәйкестендіру.
3 -қадам: Acionamento Dos Motores
Автокөлік жүргізушілері ZUMO электронды драйверлерін орнатады, драйверлерді драйверлерге орнатады, олар сервистік моторға сәйкес келеді, олар драйверлерге сәйкес келеді, олар драйверлерге сәйкес келеді. двигательдің драйверлері - сервоторлы қозғалтқыш.
4 -қадам: Obtenção Do Áudio
Тікелей эфирге де, дыбысқа да қол қоюға болады, сонымен қатар TCC де Engenharia Mecatrônica dos gradasos Lucas Nunes Monteiro e Felipe C. де Silva Salvagnini, жеке меншік теңдестіру қызметтерінің жеке және жеке қызметтері қатысады. [email protected] электрондық поштасына жіберіңіз.
Сенсорлық позициялар сенсорлық жүйені анықтайды, бұл тізбектегі күшейткіш пен күшейткішті анықтайды.
100 Гц пен 800 Гц жиілікке дейінгі жиіліктер арасындағы айырмашылық. 3 кГц жиіліктегі жиіліктер мен сенсорлық байланыстардың конфигурациясы Nyquist теориясымен де, сонымен қатар акционерлік қоғамдастықтармен де байланысты болады.
Arduino DUE -ге арналған интерактивті бағдарламалар мен қызметтерді табуға болады.
5 -қадам: Do Arduino DUE конфигурациясы (C тілдік бағдарламасы)
Devido a grand quantidade de dados, cerca de 3000 pontos for segundo, to 32 bit deito inteiro de 32 бит, to sensitamento de sensoriamento e needários процесс of DRAGONBOARD 410c алгоритмі, Arduino DUE қосымшасы үшін қосымша ақпарат қажет. бұл процессордың Shield интерфейсінің көмегімен DRAGONBOARD 410c -те Grove Seeed Sensor торабының орнатылуы, ATmega 328 микроконтроллерінің орнатылуы.
QUALCOMM DRAGONBOARD 410c сериялы байланыс арқылы QUALCOMM DRAGONBOARD 410c платформасы үшін Arduino DUE конфигурациясы.
Arduino foram ашылмайтын конфигурация ретінде:
Түсіндіру және қолдану;
DRAGONBOARD 410c үшін қосымша ақпарат;
Бағдарламаны таңдаңыз:
#қосу #анықтау Numb_Sample 3000 #DAC_Input A0 анықтаңыз
#анықтау SERVO 7
#define PosServoMin 4 #define PosServoMax 6 #define Period 60 unsigned int Scont = 0, SNow = PosServoMin; қол қойылмаған ұзақ int DAC [Numb_Sample], ind = Numb_Sample; жарамсыз TC3_Handler () {TC_GetStatus (TC1, 0); if (ind <Numb_Sample) DAC [ind ++] = analogRead (DAC_Input); егер (Scont
1); // 50% жұмыс циклы
TC_SetRC (tc, channel, rc); TC_Start (tc, арна); tc-> TC_CHANNEL [арна]. TC_IER = TC_IER_CPCS | TC_IER_CPAS; // habilita os registradores tc-> TC_CHANNEL [арна]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // desabilita os registradores NVIC_EnableIRQ (irq); // хабар алмасу}
жарамсыз орнату ()
{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // Таймерді іске қосу // TC_Stop (TC1, 0); pinMode (SERVO, OUTPUT); }
бос цикл ()
{/*// while (! Serial.available ()); char rc; // = Serial.read (); int индексі = 0; if (rc == 0) {while (! Serial.available ()); rc = Serial.read (); switch (rc) {1 -жағдай: indice = 0; while (! Serial.available ()); while ((rc = Serial.read ())! = 0xFF) {индекс << = 8; индекс += rc; while (! Serial.available ()); } Serial.print (0); Serial.print (2); SendNumber (DAC [индекс]); Serial.print (0xFF); үзіліс; 3 -жағдай: while (! Serial.available ()); if ((Serial.read ()) == 0xFF) {SNow = PosServoMax; кешіктіру (500); ind = 0; // TC_Start (TC1, 0); while (ind <Numb_Sample); // TC_Stop (TC1, 0); SNow = PosServoMin; кешіктіру (500); Serial.print (0); Serial.print (4); Serial.print (0xFF); } үзіліс; }} else if (rc == '2') {Serial.print («Серво моторын тексеру / n»); while (! Serial.available ()); rc = Serial.read (); if (rc == '1') {Serial.print («1 -режим / n»); SNow = PosServoMax; } if (rc == '2') {Serial.print («Mode 2 / n»); SNow = PosServoMin; }} */ SNow = PosServoMax; кешіктіру (100); SNow = PosServoMin; кешіктіру (100); }
6 -қадам: Das Tecnologias интерфейсі
ДРАГОНБОД 410c бағдарламасында коммутациялық байланыс орнатылған, ол интерфейсті қолдана отырып, USB-CDC немесе Arduino DUE ea DRAGONBOARD үшін интерфейсті орнатуға мүмкіндік береді. KERNEL және DRAGONBOARD 410c -ті қайта жаңарту қажет, себебі бұл жылдамдық жылдамдығының төмендеуіне әкеледі.
7 -қадам: DRAGONBOARD 410c конфигурациясы (Python)
Тікелей конфигурация Arduino DUE үшін қажет болған жағдайда, бұл сіздің ата -анаңызға арналған ақпаратты жіберуге мүмкіндік береді. Segue código abaixo.
Байқау: ешқандай қызмет көрсетілмейді, сонымен қатар ешқандай айырмашылық жоқ. Бұл USB-дің интерфейсі арқылы KERNEL және DRAGONBOARD 410c жүйелерінің қажеттіліктерін жою үшін қажет болатын интерфейске қосылу үшін қажет.
pd импортты сериялық импорттау pd ретінде np ретінде импорттау
# Сериялық конфигурация
ser = serial. Serial (port = '/dev/ttyAMC0', #tty96B0 ', baudrate = 250000, parity = serial. PARITY_NONE, stopbits = serial. STOPBITS_ONE, bytesize = serial. EIGHTBITS)
ser.isOpen ()
басып шығару ('Төмендегі пәрмендеріңізді енгізіңіз. / r / nҚолданбадан шығу үшін «шығуды» енгізіңіз.')
енгізу = 1
while 1: input = input («>>») if if == 'exit': ser.close () exit () elif input == 'read': ser.write (0) # Envia o comando para o Arduino DUE Қолданбалар мен бағдарламалардың тізімін жасау.
тізім =
i үшін (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)
8 -қадам: INTERPRETAÇU DOS ARQUIVOS DE AUDIO
Деректер сенсоры мен интерфейсі WAV форматына сәйкес келмеуі керек, TCC электрондық поштасы автоматты түрде жобаланатын, сандық нөмірлер мен кесте бойынша келісімге қол жеткізуге болмайды.. PYTHON 3 алгоритмі бойынша WAV жүйесімен жұмыс істеу үшін CSV -ге тапсырыс беру керек. Жүктеу алгоритмін жүктеу керек.
Алгоритм жүйенің функционалдығы мен функционалдығын қамтамасыз ету үшін қажет, сондықтан сіз Arduino DUE -дің ең маңызды нұсқасын таба аласыз.
# кодтау: utf-8
Csv үшін аудиожазбалар мен сөйлесулер
# MÓDULOS UTILIZADOS
импорттық толқын импорты np импорт панда ретінде pd импорт matplotlib.pyplot ретінде plt
# FUNÇÃO PARA конвертер WAV EM DADOS DO 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_file)) сигнал = np.fromstring (waveData, dtype = 'int32') Уақыт = np.linspace (бастау = 0, тоқтату = data_size/sample_rate, num = data_size, соңғы нүкте = True) df = pd.concat ([pd. DataFrame (сигнал), pd. DataFrame (Уақыт)], ось = 1) df.to_csv (file_name + '.csv', index = False) қайтару df
# CARREGANDO DATA FRAME COM OS DADOS DO 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_)
# GRÁFICO DO ESPECTRO DE AUDIO
сурет, (ax1, ax2) = plt.subplots (nrows = 2, ncols = 1, figzize = (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 ['уақыт'], df_sem_vazamento ['amp']) ax2.set_title ('Solo sem Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'bold' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax2.set_ylim ([-4e8, 4e8]) figure.tight_layout (h_pad = 5) plt.show ()
9 -қадам: Visual Do Sinal
PYTHON 3 -де Фурье трансформациясы жүзеге асады, бұл сіздің жұмысыңыздың жылдамдығының жоғарылауы, сонымен қатар жиіліктердің, амплитудалардың, ауытқулардың, жылдамдықтардың өзгеруі. Көрнекі құралдар трансформаторлармен қамтамасыз етіледі, бұл олардың пайда болуын анықтауға мүмкіндік береді. Автоматты түрде алгоритмдердің орындалуы мүмкін болатын қызметтерді көрсету.
100 Гц пен 800 Гц жиілікке дейінгі жиіліктер, жиілік диапазонындағы ауқымды бақылауды қажет етеді.
# кодтау: utf-8# Фурье трансформациясының процестері
pd ретінде импорттау pp ретінде импорттық numpy ретінде matplotlib импорттау толқыны ретінде plt# Função que realiza a transformada de Fourier e plota os gráficos for análise def Fourier (df_list): Fs = 44100; # Hz Ts = 1.0/Fs тақта амострагемі; # 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 бойынша түсініктеме. arange (n) T = n/Fs frq = k/T frq = frq [диапазон (n // 2)] Y = np.fft.fft (y)/n Y = Y [диапазон (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 ('Time') ax [0].set_ylabel ('Amplitude') ax [1].plot (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 () frq қайтару, abs (Y))# Функцияның орындалуы CSV -де және Фурьедегі read_csv (file_name, init, final): df = pd.read_csv (file_name + '.csv') df.columns = ['amp', ' time '] delta = final-init егер init*44100> len (df) немесе final*44100> len (df) болса: init = (len (df)/44100) -delta, егер init = 100) & (df [' freq '] <= 800)] mx = сұрыпталған (df [' amp ']) басып шығару («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']. Mean ()*100, «%», sep = «») print («50 maiores amplitudes:», np.mean (mx [-50:]) // df ['amp']. mean ()*100, «%», sep = «») print («10 maiores amplitudes:», np.mean (mx [-10:]) // df ['amp']. орташа ()*100, «%», sep = «») басып шығару («Maior амплитудасы:», np.mean (mx [-1:]) // df ['amp']. орташа ()*100, « %«, sep =» «) read_csv ('Solo_com_Vazamento', 2, 10) # Үлгілерге арналған кесте ('Solo_sem_Vazamento', 2, 10) # Үлгілерге арналған кесте
10 -қадам: Algoritmo Em R Para Extração Das ерекшеліктері Dos Dados
Алгоритмдер мен функцияларды жүзеге асыруда қосымша функцияларды (сипаттамаларды) қолдануға болады.
Алгоритмді анықтау қажет болса, нейрондық жүйенің қажеттіліктерін анықтау қажет болса, олар сіздің қажеттіліктеріңізді анықтайды.
Алгоритмдердің әрқайсысы әр түрлі операциялық жүйелерде, сонымен қатар бірде -бір ерекшеліктерде, сонымен қатар бірде -бір жеке сипаттамада сипатталады.
Қарапайым ақпарат сіздің жеке ақпаратыңыздың бір түрі болып табылады, олар сіздің жеке ақпаратыңыздың бір бөлігі болып табылады, сонымен қатар сіздің жеке мәліметтеріңіз де бар.
Алгоритмдердің бір бөлігі GitHub бағдарламасының сілтемесі болып табылмайды, егер бұл арнайы жобалар болса.
Бағдарламалық жасақтаманың ақысыз бағдарламалық жасақтамасы, R студиясынан аударманы жүктеп алыңыз.
Қосымша сипаттамалар:
- Meanfreq: орташа жиілік (кГц)
- sd: жиіліктің стандартты ауытқуы
- медиана: медианалық жиілік (кГц)
- Q25: бірінші квантиль (кГц)
- Q75: үшінші квантиль (кГц)
- IQR: интерваленттік диапазон (кГц)
- қисық: қисықтық (спецификалық сипаттамадағы жазбаны қараңыз)
- курт: куртоз (спецификалық сипаттамадағы жазбаны қараңыз)
- сп: спектрлік энтропия
- sfm: спектрлік жазықтық
- режим: режим жиілігі
- центроид: жиілік центроид (спецпропты қараңыз)
- пикф: шыңның жиілігі (ең жоғары энергиямен жиілік)
- орташа функция: дыбыстық сигнал бойынша өлшенетін негізгі жиіліктің орташа мәні
- минфун: дыбыстық сигнал бойынша өлшенетін ең төменгі негізгі жиілік
- maxfun: дыбыстық сигнал бойынша өлшенетін максималды негізгі жиілік
- кездейсоқ: дыбыстық сигнал бойынша өлшенетін басым жиіліктің орташа мәні
- mindom: акустикалық сигнал бойынша өлшенетін минималды басым жиілік
- maxdom: дыбыстық сигнал бойынша өлшенетін басым жиіліктің максимумы
- dfrange: дыбыстық сигнал бойынша өлшенетін басым жиілік диапазоны
- modindx: модуляция индексі. Негізгі жиіліктердің іргелес өлшеулерінің жиілік диапазонына бөлінген абсолюттік айырмасы ретінде есептеледі
- жапсырма: ағып кету немесе ағып кетусіз
Алгоритмо әдісі:
пакеттер <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'mice', 'e1071', 'rpart', 'xgboost', 'e1071') if (ұзындық (setdiff (бумалар, қатар атаулары (install.packages ())))>> 0) {install.packages (setdiff (бумалар, қатар атаулары (install.packages ())))})
кітапхана (tuneR)
кітапхана (жаңа толқын) кітапханасы (caTools) кітапханасы (rpart) кітапханасы (rpart.plot) кітапханасы (randomForest) кітапханасы (warbleR) кітапханасы (тышқандар) кітапханасы (xgboost) кітапханасы (e1071)
specan3 <- функциясы (X, bp = c (0, 22), wl = 2048, табалдырық = 5, параллель = 1) { # Параллель өңдеуді қолдану үшін: library (devtools), install_github ('nathanvan/parallelsugar') if (class (X) == «data.frame») {if (барлығы (c («sound.files», «selec», «start», «end») % % colnames (X))) {бастау <- as.numeric (unlist (X $ start)) end <- as.numeric (unlist (X $ end)) sound.files <- as.character (unlist (X $ sound.files)) selec <- as.character (unlist (X $ selec))}} басқа тоқтату (қою (қою (c («sound.files», «selec», «start», «end») [! (c («sound.files», «selec», «start», «end») % % colnames (X))], құлату = «,»), «баған (лар) деректер шеңберінде табылмады»))} else stop («X - бұл деректер шеңбері емес»)) #егер бастапқы немесе соңғы аялдамада НА болса, егер (кез келген (is.na (c (соңы, басталуы))))) тоқтау («Бастауда және/немесе соңында табылған НАлар») #if соңы немесе басталуы сандық тоқтау болмаса if (all (class (end)! = «numeric» & class (start)! = «цифрлық))) stop (» 'end' and 'selec' цифрлы болуы керек)) #егер кез келген аяқталу нүктесінен жоғары болса кез келген (соңы - басталуы <0)) тоқтау (қою («Бастау en -ден жоғары d ішіндегі «, ұзындық (ол (соңы - старт20))) тоқтау (қою (ұзындық (ол (соңы - басталуы> 20))),» таңдау (лар) 20 секундтан асатын «)) опциялары (show.error.messages = TRUE) #if bp вектор немесе ұзындық емес! = 2 тоқтаған жағдайда (! is.vector (bp)) stop («'bp' 2 ұзындығының сандық векторы болуы керек) else {if (! length (bp) == 2) stop («'bp' 2 ұзындығының сандық векторы болуы керек)}} #қайтару туралы ескерту, егер барлық дыбыстық файлдар табылмаса fs <- list.files (path = getwd (), pattern =».wav $ «, ignore.case = TRUE) if (ұзындық (бірегей (sound.files [(sound.files % in % fs)])))! = ұзындық (бірегей (sound.files)))) мысық (пастасы (ұзындығы (бірегей (дыбыс). файлдар))-ұзындық (бірегей (sound.files [(sound.files % in % fs)])))), «.wav файлдары табылмады»)) #жұмыс каталогындағы дыбыстық файлдардың саны және егер 0 тоқталса d <- бұл (sound.files % in % fs) if (length (d) == 0) {stop («.wav файлдары жұмыс каталогында жоқ»)} басқа {бастау <- бастау [d] соңы <- соңы [d] selec <- selec [d] дыбыс.файлдары <- дыбыс.файлдары [d]} # Егер параллель сандық болмаса, егер (! сандық (параллель)) тоқтаса («'параллель» болуы керек 1 «ұзындығының сандық векторы болыңыз) егер (кез келген (! (параллель %% 1 == 0), параллель 1) {опциялар (ескерту = -1) if (барлығы (Sys.info () [1] ==») Windows «, қажетNamespace (» параллелсугар «, тыныш = TRUE) == TRUE)) lapp <- функциясы (X, FUN) parallelsugar:: mclapply (X, FUN, mc.cores = параллель) else if if (Sys.info () [1] == «Windows»)) {cat («Windows пайдаланушылары параллель есептеуге арналған» parallelsugar «пакетін орнатуы керек (сіз қазір жасамайсыз!)»)) Lapp <- pbapply:: pblapply} else lapp <- функция (X, FUN) parallel:: mclapply (X, FUN, mc.cores = parallel)} else lapp <- pbapply:: pblapply параметрлері (ескерту = 0) if (parallel == 1) cat («Акустикалық параметрлерді өлшеу:») x <- as.data.frame (lapp (1: ұзындық (бастау), функция (i) {r <- tuneR:: readWave (file.path (getwd (), дыбыс.файлдары ), бастап = бастау , to = end , бірлік = «секунд») b төбе ([email protected]/2000) - 1) b [2] < - төбе ([email protected]/2000) - 1 #жиілік спектрін талдау songspec <- seewave:: spec (r, f = [email protected], plot = FALSE) талдау <- seewave:: specprop (songspec, f = [email protected], flim = c (0, 280/1000), сюжет = ЖАЛҒАН) #үнемдеу параметрлері Meanfreq <- талдау $ орташа/1000 sd <- талдау $ sd/1000 медиан <- талдау $ медиана/1000 Q25 < $ QQ75 талдау <- талдау $ QIQR <- талдау $ IQR/1000 қисайту <- талдау $ қисықсыздық <- талдау $ kurtosis sp.ent <- талдау $ sh sfm <- талдау $ sfm режимі <- талдау $ режим/1000 центроид <- талдау $ цент/1000 #Амплитудалық шыңдар жиілігі шың шыңы <- 0 #жаңарту толқыны:: fpeaks (songspec, f = [email protected], wl = wl, nmax = 3, plot = FALSE) [1, 1] #Негізгі жиілік параметрлері ff <- seewave:: fund (r, f = [email protected], ovlp = 50, табалдырық = шекті, fmax = 280, ylim = c (0, 280/1000), plot = FALSE, wl = wl) [, 2] ортафун <-мені (ff, na.rm = T) минфун <-мин (ff, na.rm = T) maxfun <-max (ff, na.rm = T) #Басымдық жеміс параметрлері y <- жаңарту толқыны:: dfreq (r, f = [email protected], wl = wl, ylim = c (0, 280/1000), ovlp = 0, учаске = F, табалдырық = шекті, жолақ = b * 1000, fftw = TRUE) [, 2] кездейсоқ <- орташа (y, na.rm = TRUE) ақыл-ой <- мин (y, na.rm = TRUE) maxdom <- max (y, na.rm = TRUE) dfrange <- (maxdom- mindom) ұзақтығы <- (аяқталуы - басталуы ) #модуляция индексінің есептелуі <- векторының () үшін өзгереді, онда (! na (y))) {өзгерту <- abs (y [j]- y [j + 1]) өзгереді <- қосады (өзгертеді, өзгертеді)} if (mindom == maxdom) modindx <-0 else modindx <- орташа (өзгертулер, na.rm = T)/dfrange #сақтау нәтижелерін қайтару (c (ұзақтығы, орташа жиілік, sd, медиана, Q25, Q75, IQR, қисық, құрт, sp.ent, sfm, режим, центроид, пикф, орташа ойын, minfun, maxfun, meandom, mindom, maxdom, dfrange, modindx))})) #нәтиже атауларының қатар атауын өзгерту (x) <- c («ұзақтығы», «Meanfreq», «sd», «медианасы», «Q25»), «Q75», «IQR», «қисық», «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))) colnames (x) [1: 2] <- c («sound.files», «selec») жол атаулары (x) <- c (1: nrow (x)) қайтару (x)}
processFolder <- функция (folderName) { # Бос деректерден бастаңыз.frame. data <- data.frame () # Қалтадағы файлдар тізімін алу. list <- list.files (folderName, '\. wav') # Өңдеу үшін data.frame файл тізімін қосыңыз. for (fileName in list) {row <- data.frame (fileName, 0, 0, 20) data <- rbind (data, row)} # Баған атауларын орнатыңыз. атаулар (деректер) <- c ('sound.files', 'selec', 'start', 'end') # Өңдеуге арналған қалтаға жылжытыңыз. setwd (folderName) # Файлдарды өңдеу. акустика <- specan3 (деректер, параллель = 1) # Негізгі қалтаға қайта жылжытыңыз. setwd ('..') акустика}
жыныс <- функциясы (filePath) {if (! exists ('genderBoosted')) {load ('model.bin')} # Орнату жолдары. currentPath <- getwd () fileName <- бас атауы (filePath) жолы <- dirname (filePath) # Файлды оқу үшін каталогты орнатыңыз. setwd (path) # Бос деректерден бастаңыз. кадр. деректер <- data.frame (fileName, 0, 0, 20) # Баған атауларын орнатыңыз. атаулар (деректер) <- c ('sound.files', 'selec', 'start', 'end') # Файлдарды өңдеу. акустика <- specan3 (деректер, параллель = 1) # Қалпына келтіру жолы. setwd (currentPath) болжау (genderCombo, newdata = акустика)}
# Деректерді жүктеу
ағып кетуі <- processFolder ('caminho para o pasta com sample de áudio com vazamento') <_ processFolder ('caminho para o pasta com үлгілері де áudio sem vazamento')
# Белгілерді орнатыңыз.
ағып кетуі $ label <- 1 жоқ_ ақпау $ белгісі <- 2 дерек <- rbind (ағып кету, ағып кетпеу) деректер $ белгісі <- фактор (деректер $ белгісі, жапсырмалар = c ('ағып кету', 'ағудың_сізі)))
# Пайдаланылмаған бағандарды алып тастаңыз.
деректер $ ұзақтығы <- NULL деректер $ sound.files <- NULL деректер $ selec <- NULL деректер $ пикф <- NULL
# NA бар жолдарды алып тастаңыз.
деректер <- деректер [аяқталды.қаптар (деректер),]
# Csv деректер жиынтығын жазыңыз.
write.csv (деректер, файл = 'features.csv', sep = ',', жол.есімдер = F)
11 -қадам: Нейронды қайтарыңыз
Бұл нейронды жаңарту, сонымен қатар сенсорлық жүйенің автоматтандырылған әдістері.
MLP (Multilayer Perceptron) нейрондық жүйелері пайдаланылады, бұл жүйенің имплантантының жүйелі түрде орнатылмағанын анықтауға мүмкіндік береді.
Тіркелу қажет болған жағдайда, олар сіздің жеке өміріңізден бас тартуға болады. Түсініктемелер бойынша, сіз бұл мәселені шеше алмайсыз, сонымен қатар олар біркелкі емес.
Тексеру тестілеудің 100%-дан аспайтын әдістері мен әдістері, сондай -ақ тестілеудің 100%-ы, сондай -ақ басқа да құралдардың бақылауы.
Алгоритмдердің кез келгені ойын режимінде де, кез келген уақытта да реттеледі. Алгоритмдердің әрқайсысы жүйелік режимде емес, сонымен қатар жаңа режимде де, сонымен қатар жаңа режимде де жаңа форматта жүзеге асады.
# кодтау: utf-8
panda -ны импорттау
sklearn.model_selection -тен np ретінде импорттау train_test_split sklearn.neural_network -тен tts ретінде импорттау MLPClassifier sklarn.metrics -ден MLP ретінде импорттау classification_report cr ретінде sklearn.metrics импорт confusion_matrix см
# Leitura dos dados CSV жасайды
df = pd.read_csv ('features.csv') # Бөлінген кесте df_X = df [df.columns [: len (df.columns) -1] # Фильтрандо df_X = df_X
# Сепарандо папасы
X_train, X_test, Y_train, Y_test = tts (df_X, df_Y, test_size = 0.1)
# Criando modelo de rede neuronal
modelo = MLP (alpha = 0.0001, learning_rate_init = 0.0001, hidden_layer_sizes = (50, 50, 50, 50), max_iter = 10000, активация = 'tanh', шешуші = 'lbfgs')
# Treinando режимі
modelo.fit (X_train, Y_train) нәтиже = modelo.predict (X_test)
# Imprimindo нәтиже жинақтары
report = cr (Y_test, result) mat = cm (y_pred = нәтиже, y_true = Y_test) басып шығару («Matriz de confusão») басып шығару (мат, end = «\ n / n») басып шығару («Relatório de Classificação») басып шығару (есеп)
Ұсынылған:
Баспалдақтар үшін интерактивті жарықдиодты жүйе жасаңыз: 7 қадам
Баспалдақтар үшін интерактивті жарықдиодты жүйе жасаңыз: үйде баспалдақ бар. Қоғамда баспалдақтарды жөндеу бойынша көптеген жобаларды көру өте қызықты. Жақында бос емес, сондықтан мен үйдегі баспалдақтарды өзгерту үшін кейбір ашық бастапқы модульдерді қолдануға шешім қабылдадым
Сіздің Raspberry Pi ойын серверіне арналған салқындатылған жүйе!: 9 қадам (суреттермен)
Raspberry Pi ойын серверіне арналған салқындатылған иондық жүйе!: Сәлеметсіздер ме! Біраз уақыттан кейін мен Raspberry Pi алдым, бірақ мен онымен не істеу керектігін білмедім. Жақында Minecraft қайтадан танымал бола бастады, сондықтан мен және достарыма ләззат алу үшін Minecraft серверін орнатуды шештім. Бұл мен екенім белгілі болды:
Түстерді сұрыптау жүйесі: Arduino негізіндегі екі белдеуі бар жүйе: 8 қадам
Түстерді сұрыптау жүйесі: Arduino негізіндегі екі белдеуі бар жүйе: Өндірістік саладағы өнімдер мен заттарды тасымалдау және/немесе буып -түю конвейерлік ленталар көмегімен жасалған желілер көмегімен жүзеге асырылады. Бұл белдіктер затты белгілі бір жылдамдықпен бір нүктеден екінші нүктеге жылжытуға көмектеседі. Кейбір өңдеу немесе сәйкестендіру тапсырмалары болуы мүмкін
UWB локализациясы: 6 қадам
UWB Localization Feather: Ultra-WideBand Feather Decawave DWM1000 модулін және ATSAMD21 ARM Cortex M0-ны Adafruit қауырсын форм-факторына қосады. DWM1000 модулі IEEE802.15.4-2011 UWB үйлесімді сымсыз модуль болып табылады, ол үй ішінде дәл орналасуға қабілетті
WiFi резервуарлы өсімдіктерді автоматты түрде беру - жабық/ашық ауада өсіру - су қондырғылары қашықтан бақылаумен автоматты түрде: 21 қадам
Резервуарлы WiFi автоматты өсімдік қоректендіргіші - жабық/ашық өсіру қондырғысы - су қондырғылары қашықтан бақылаумен автоматты түрде: Бұл оқулықта біз өсімдіктерді автоматты түрде суаратын және Adosia платформасы арқылы қашықтан бақыланатын жабық/ашық өсімдіктерді тамақтандыратын жүйені қалай орнату керектігін көрсетеміз