Բովանդակություն:
- Քայլ 1: Ստեղծեք օգտվողի մուտքագրում `օգտագործողի տարիքը վերլուծելու համար
- Քայլ 2: Փորձարկեք ձայնը օգտվողի համար
- Քայլ 3. Կատարեք Աուդիոմետրիայի թեստ աջ ականջի համար
- Քայլ 4: Ձախ ականջի համար ստեղծեք նույն ծածկագիրը
- Քայլ 5. Կատարեք կողք կողքի պատկեր ՝ տվյալները համեմատելու համար
- Քայլ 6. Եթե ցանկանում եք, ավելացրեք մի փոքր շնորհակալական հաղորդագրություն:
Video: Ինչպես կատարել մեծահասակների լսողության թեստ MATLAB- ի միջոցով. 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
ՀՐԱԱՐՈՄ. Մեր թեստը բժշկական ախտորոշիչ չէ և չպետք է օգտագործվի որպես այդպիսին: Լսողությունը ճշգրիտ չափելու համար դիմեք բժշկական մասնագետի:
Օգտագործելով արդեն եղած նյութերը ՝ մեր խումբը լսողության թեստ անցկացրեց: Մեր թեստը նախատեսված է միայն մեծահասակների և դեռահասների համար, քանի որ փոքր երեխաների լսողությունը տարբեր տիրույթներում է և պետք է չափվի միայն մասնագետի կողմից:
Այս նախագիծը ոգեշնչվեց մեր BME MATLAB դասարանում աշխատելիս և սինուս ալիքների հնչյունների հետ խաղալիս: Մեզ հետաքրքրում էր, թե ինչպես կարելի է փոխել սինուսային ալիքը ՝ ձայնը հնչեցնելու համար տարբեր խաղադաշտերում:
Այս նախագծի համար մեզ անհրաժեշտ էր միայն համակարգիչ MATLAB R2018b- ով և մի զույգ ականջակալ: Մենք ներառեցինք օրիգինալ կերպար ՝ Ֆրենսիսին, որպես թալիսման ՝ ծրագիրն ավելի հումորային դարձնելու համար:
Քայլ 1: Ստեղծեք օգտվողի մուտքագրում `օգտագործողի տարիքը վերլուծելու համար
Այս ծածկագրի առաջին մասը օգտվողի մուտքագրումն է, որը որոշում է ՝ արդյո՞ք նրանք բավական մեծ են ՝ լսողության թեստը կատարելու համար: Ինչու՞ դա չանել ՝ ավելացնելով նաև մեր թալիսման ՝ Ֆրենսիսի հիմար նկարները: Դա անելու համար ներբեռնեք ներառված zip ֆայլը, այնուհետև հանեք այն ֆայլում, որը կարող է քաշվել կոդի մեջ: Շարունակեք խմբաքանակով վերբեռնել գծագրերով լի ֆայլը ՝ օգտագործելով սա ՝
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
Հաղորդագրությունների տուփերը և գծանկարների մեծ պատկերները ներկայացնելու համար մենք օգտագործեցինք Ֆրենսիսին ձեզ ցույց տալու այս զվարճալի մեթոդը: Ուղղակի ձեր ընտրած պատկերը կարդացեք այն ձևաչափով ՝ variable = imread ('nameofpicture.jpg');
Այնուհետև շարունակեք ցուցադրել այն ՝ օգտագործելով imshow (փոփոխական); այն այնուհետև կցուցադրվի որպես գործիչ ձեր MatLab- ում, երբ այն գործարկեք:
Հաջորդը հաղորդագրության տուփերն են, որոնք օգտագործվում են ամբողջ ծածկագրում: uiwait () մի գործառույթ է, որի դեպքում ծածկագիրը դադարեցվում է մինչև uiwait- ի համար ընտրված ֆունկցիայի ավարտը: Այս ընտրված գործառույթը msgbox է («հաղորդագրություն», «վերնագիր», «պատկերակ»):
Դուք կարող եք ազատորեն փոխել հաղորդագրությունները, որոնք ասում է Ֆրենսիսը, եթե հետևեք վերը նշված msgbox () ձևաչափին: Եթե ցանկանում եք օգտագործել Ֆրենսիսի նկարները, «պատկերակը» նշեք որպես «սովորույթ» և շարունակեք դա ստորակետով և ձեր ընտրած նկարի ընթերցվածի փոփոխականով: Կարող եք նաև օգտագործել նախանշված «պատկերակի» տեսակները: այն պետք է ունենա այս տեսքը.
hi = imread ('Regular.jpg'); % կարդում է պատկերը վերբեռնված ֆայլից ցուցադրում (բարև); uiwait (msgbox («Բարև և շնորհակալություն մեր լսողության թեստը ընտրելու համար! Սա Ֆրենսիսն է, և նա այսօր կօգնի ձեզ ձեր թեստում»), «Բարի գալուստ», «սովորական», բարև));
Հաջորդը ստեղծեք մուտքագրում, որը նման է օգտագործողի տարիքին:
UserAge = մուտքագրում («Մինչև այս թեստը սկսելը, քանի՞ տարեկան եք (տարի) (օրինակ ՝ 32, 56,…) n ',' s ');
NOTԱՆՈԹՈԹՅՈՆ. Եթե թվերը տարօրինակ են և շատ են, օգտագործեք փակել բոլորը, որպեսզի ձեր կոդն աշխատելիս հեռացնեք ավելի վաղ թվերը
Այնուհետեւ ստեղծեք անջատիչի գործի կառուցվածքը: Հիշեք, որ օգտագործողի մուտքագրումը տողում է, և դուք պետք է այն վերածեք թվային արժեքի: Այսպիսով, օգտագործեք str2double (UserAge): Յուրաքանչյուր դեպք պետք է ունենա տարիքային միջակայք, ինչպիսիք են 4 -ից 6 -ը կամ 18 -ից 40 -ը: գործերից մեկի դեպքում որպես ճշմարիտ հաստատելու համար փոփոխականը պետք է օգտագործի num2cell (զանգված), այսպես.
switch str2double (UserAge) % -ը փոփոխում է տողը տողից թվային արժեքի դեպքում num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (ֆրենսիս);
uiwait (msgbox («Դուք պտուղ եք. Ֆրենսիսը կարծում է, որ ձեր լսողության թեստը պետք է կատարեք բժշկի մոտ», «Test Denied!», «custom», frances));
վերադարձ
Նախկին խմբերը պետք է վերադարձվեն, որպեսզի օգտագործողը չկարողանա շարունակել ծածկագիրը:
Հիշեք, որ ավարտեք գործի կառուցվածքը և փակեք բոլոր թվերը:
Քայլ 2: Փորձարկեք ձայնը օգտվողի համար
Այս հատվածը գոյություն ունի `ապահովելու համար, որ մասնակցի ձայնն իրենց սարքում ոչ շատ հանգիստ է, ոչ էլ շատ բարձր:
Օգտվողին ինչ -որ նախազգուշացում տալու համար հայտնվում է հաղորդագրության տուփ, որը սպասում է օգտվողի հաստատմանը ՝ ձայնը շարունակելուց առաջ: ճիշտ է: Պատրա՞ստ եք »,« Սպասիր »,« օգնություն »));
Սինուսային ալիք է հնչում 1 ամպլիտուդով և 1000 Հց ընտրանքի արագությամբ ՝ T = [0: 1/SampleRate: 2]; y = 1*մեղք (2*pi*200*T); ձայն (y, SampleRate);
Այնուհետև օգտվողին տրվում է հարց ՝ օգտագործողի մուտքագրված պատասխանով. Q = մուտքագրում («Կարո՞ղ եք լսել ձայնը: [y/n] n ',' s ');
Այնուհետև որոշ ժամանակ փնտրում ենք, երբ Q == 'n', եթե ճշմարիտ է, ապա ձայնը կրկնում է և նորից հարցնում օգտվողին, մինչև պատասխանը 'n' -ից դառնա 'y': մինչդեռ Q == 'n' եթե strcmp (Q, 'n') disp ('Ավելի բարձրացրեք ձեր համակարգչի ձայնը'); սպասման_ձայն; դադար (2); Q = մուտքագրում ('Կարո՞ղ եք հիմա լսել ձայնը: [y/n] n', 's'); վերջ վերջ
Այնուհետև սպասում է մի պահ, նախքան ծածկագրի իրական քննության հատվածը տեղափոխելը:
Քայլ 3. Կատարեք Աուդիոմետրիայի թեստ աջ ականջի համար
Այս ծածկագրում յուրաքանչյուր առանձին ականջի համար մի օղակ կաշխատի 6 անգամ `տարբեր հաճախականություններով և ծավալներով: Կախված ականջից, որը ցանկանում եք ստուգել, Out փոփոխականն ունի մեկ շարքում ձայն, իսկ մյուսում `զրո:
Սկզբում դուք ստեղծում եք երկու դատարկ գծի վեկտորներ `գրանցելու օգտվողի լսած ձայնի հաճախականություններն ու ամպլիտուդը:
Այս հատվածը ինդեքսավորված է հանգույցի համար `որքան ձայներ եք ցանկանում նվագել, եթե ցանկանում եք պատահականացնել նվագարկվող հաճախականությունները և ամպլիտուդը:
F- ը հաճախականությունն է `r = (rand*10000); Fs = 250 + r; (rand ֆունկցիան է ստեղծել պատահականորեն առաջացած հաճախականություն) t- ը որոշակի ժամանակահատված է, որը որոշվում է ՝ t = linspace (0, Fs*2, Fs*2); s- ը սինուսային ալիքն է. s = մեղք (2*pi*t*1000); (սա կարելի է բազմապատկել w պատահական փոփոխականով `ձայնային գործառույթի համար պատահական ամպլիտուդ/դԲ արժեք ստեղծելու համար. w = rand;)
Աջ ականջի ելքը հետևյալն է ՝ Out = [զրո (չափ (t)); s] ';
Ելքները նվագարկվում են կոդի միջոցով `ձայն (դուրս, Fs)
Հաջորդ քայլն այն է, որ օգտագործողի ինտերֆեյսը կազմվի կոդի գրառումների հետ `օգտվողը լսել է ձայնը, թե ոչ:
Սկզբում դուք կազմեք գործիչ և որոշեք այն դիրքը, որում հայտնվելու է պատկերը. Gcbf = գործիչ ('pos', [30 800 350 150]);
*** Եթե կոճակը ձեզ չի երևում, գործչի դիրքը, ինչպես ցույց է տրված վերևի զանգվածում, կարող է սխալ տեղադրվել ձեր համակարգչի համար: Սա լուծելու համար փոխեք 30 և 800 արժեքները ՝ ցանկացած դիրքի, որը ցանկանում եք: Օրինակ, [0 0 350 150] ունենալը կբացահայտի մոնիտորի ներքևի ձախ մասում գտնվող gui կոճակը: ***
Փոփոխական կոճակը ստեղծվում է ձայնագրելու համար, երբ օգտվողը լսում է ձայնը, և դիրքն ու ցուցադրումը կարող են հարմարեցվել. պիտակ ',' togglebutton1 ',' Պաշտոն ', [30 60 300 40],' Հետադարձ պատասխան ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; փակել (gcbf); '); Այս կոնկրետ ծածկագիրն ունի ռեզյումե և դատարկ վեկտորները արժեք են ավելացնում, եթե սեղմված է կոճակը:
Այնուհետև ստեղծեք սպասման գործառույթ ՝ կոճակի պատասխանը ընդունելու համար և սեղմելիս ակտիվացրեք կոճակի կոդը ՝ h = randi ([4, 7]); uiwait (gcbf, h); (մենք կատարեցինք h պատահական փոփոխականը, որպեսզի մասնակիցները չկարողանան խաբել և որոշել պատասխանելու համար անհրաժեշտ վայրկյանների քանակը):
Օղակի ավարտից հետո պահեք հաճախականության ելքային փոփոխականը (freq_right) Հց -ում, այնպես որ այն հանգիստ թողեք: Այնուհետև փոխակերպեք dB_right փոփոխականը ամպերից դեցիբելների ՝ օգտագործելով հավասարումը. DB_right = mag2db (amp_right)*(-1);
Այնուհետեւ ավելացրեք գործառույթը. Փակել բոլորը: սա դուրս կգա ավելորդ թվերից, որոնք կարող են հայտնվել:
Ավելացրեք դադարի գործառույթ ՝ մոտ 10 վայրկյան, որպեսզի օգտագործողին ժամանակ տա ձախ ականջին հարմարվելու և պատրաստվելու համար:
Քայլ 4: Ձախ ականջի համար ստեղծեք նույն ծածկագիրը
Կրկնեք աջ ականջի համար օգտագործված ծածկագիրը ՝ ձախ ականջը փորձարկող հաջորդ հատվածը պատրաստելու համար: Տարբերությունը միայն այն է, թե որ ելքային ալիքից է հնչելու ձայնը: Դա անելու համար շրջեք Out փոփոխականի զանգվածների արժեքների կարգը: Այն պետք է ունենա այս տեսքը.
Դուրս = [վ; զրոներ (չափ (t))] ';
Դրանով ոչ մի ձայն դուրս չի գա աջ ալիքից, այլ ձախ ալիքից:
Քայլ 5. Կատարեք կողք կողքի պատկեր ՝ տվյալները համեմատելու համար
Այժմ կազմեք գրաֆիկ ՝ տվյալները ցույց տալու համար: Երկու գրաֆիկ եք դնում մեկ ֆիգուրի մեջ, այնպես որ դա արեք:
գործիչ (1); ենթահող (1, 2, 1); *** ենթահող (1, 2, 2) մյուսի համար
Յուրաքանչյուր ենթածրագրի համար ավելացրեք այս կարկատանները `հատուկ գույներով և կոորդինատներով: Այս բաժինը դուրս է գրաֆիկից `կախված նրանից, թե որքան մեծ է լսողության կորստի աստիճանը: Նմանապես.
կարկատել ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold on % Ենթածրագրում այժմ կպահվեն հետևյալ կարկատելներն ու ցրված գծերը
տեքստ (3173, 8, «Նորմալ»);
կարկատել ([250 8000 8000 250], [40 40 25 25], [0 0.75 0.25]); % կանաչ
տեքստ (3577, 33, «Մեղմ»);
կարկատել ([250 8000 8000 250], [55 55 40 40], [0.16, 0.87, 0.87]); % ցիան
տեքստ (2870, 48, «Չափավոր»);
կարկատել ([250 8000 8000 250], [70 70 55 55], [0.22, 0.36, 0.94]); % Կապույտ
տեքստ (1739, 62, «Չափավոր ծանր»);
կարկատել ([250 8000 8000 250], [90 90 70 70], [0.78, 0.24, 0.78]); % մանուշակագույն
տեքստ (3142, 80, «Դաժան»);
կարկատել ([250 8000 8000 250], [120 120 90 90], [0.96, 0.24, 0.24]); % կարմիր
տեքստ (3200, 103, «Խորքային»)
Այնուհետև ավելացրեք ձախ և աջ ցրման գծերը: Մենք կարող ենք տրամադրել ընդհանուր ազգային միջին ցուցանիշ ձեզ համար: Այստեղ ՝
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-value, ձախ ականջNat_dBL = [10 3 10 15 10 15 15]; % y- արժեք
Nat_FreqR = [250 500 1000 2000 4000 8000]; % աջ ականջ
Nat_dBR = [10 5 10 15 10 15];
Theրված գծապատկերները պետք է տարբերեն ձախ և աջ կետերը: Դուք կարող եք խաչեր և շրջանակներ կատարել:
NL = ցրել (Nat_FreqL, Nat_dBL, 'bx'); % գծապատկերներ կապույտ խաչի միավորներ NR = ցրում (Nat_FreqR, Nat_dBR, 'ro'); % պատկերում է կարմիր շրջանակներ
Ստեղծեք լեգենդ ազգային գրաֆիկի համար `այն վերագրելով որոշակի փոփոխականների. Լեգենդ ([NL NR], {'title1', 'title2'});
Սահմանեք ձեր x սահմանաչափը 250 -ից մինչև 8000 Հց, իսկ ձեր y սահմանը `-10 -ից մինչև 120 դԲ: Հիշեք, որ ձեր ուղղահայաց տիզերը փոխեք իտիկներով ()
Պիտակավորեք ձեր x առանցքը «Հաճախականություն Hz» և ձեր y առանցքը ՝ «Pitch dB»:
Հակադարձեք y առանցքը ՝ առանցքը հավաքելով ax = gca
Այնուհետև y ուղղության հատկությունը կապեք դրանով ՝ ax. YDir = 'հակառակ
Այժմ երկրորդի ծածկագիրը մոտավորապես նույնն է, բայց առանց լեգենդի և ձախ և աջ թեստերի փոփոխականներով գծապատկերների գծագրում:
Այս ամենից հետո ավելացրեք մոտ 10 վայրկյան դադար, որպեսզի օգտվողը կարողանա նայել դրանց արդյունքներին:
Քայլ 6. Եթե ցանկանում եք, ավելացրեք մի փոքր շնորհակալական հաղորդագրություն:
Սա պարզապես զվարճանքի համար է, եթե ցանկանում եք, բայց շնորհակալության և հրաժեշտի համար ավելացնել մեկ այլ imread (), imshow () և uiwait (msgbox ()): Բացի այդ, հիշեք, որ տեղադրեք clf; փակել բոլորը; clc; ամեն ինչ փակելու համար: Լավ աշխատանք, դու դա արեցիր:
Խորհուրդ ենք տալիս:
Ինչպես կատարել դիպչող դռան զանգ, մարմնի ջերմաստիճանի հայտնաբերում, GY-906, 433 ՄՀց Arduino- ի միջոցով. 3 քայլ
Ինչպես կատարել դիպչող դռան զանգ, մարմնի ջերմաստիճանի հայտնաբերում, GY-906, 433 ՄՀց Arduino- ի միջոցով. Այսօր մենք կանենք դիպչող դռան զանգ, այն կբացահայտի ձեր մարմնի ջերմաստիճանը: Այժմյան իրավիճակում շատ կարևոր է իմանալ, թե արդյոք մարմնի ջերմաստիճանը նորմայից բարձր է, երբ ինչ -որ մեկը ծաղրում է: Այս նախագիծը կարմիր լույս կներկայացնի, եթե հայտնաբերվի որևէ
Ինչպես կատարել ձեր առաջին պարզ ծրագրաշարը Python- ի միջոցով. 6 քայլ
Ինչպես կատարել ձեր առաջին պարզ ծրագրաշարը Python- ի միջոցով. Բարև, բարի գալուստ այս հրահանգի: Այստեղ ես պատմելու եմ, թե ինչպես պատրաստել ձեր սեփական ծրագրակազմը: Այո, եթե ունեք գաղափար … բայց գիտեք իրականացնել կամ հետաքրքրված եք նոր բաներ ստեղծելով, ապա դա ձեզ համար է … Նախապայման. Պետք է ունենալ հիմնական գիտելիքներ P
Ինչպես կատարել խոնավության և ջերմաստիճանի իրական ժամանակի տվյալների գրանցիչ Arduino UNO- ի և SD- քարտի միջոցով: - DHT11 Տվյալների գրանցման մոդելավորում Proteus- ում. 5 քայլ
Ինչպես կատարել խոնավության և ջերմաստիճանի իրական ժամանակի տվյալների գրանցիչ Arduino UNO- ի և SD- քարտի միջոցով DHT11 Տվյալների գրանցման մոդելավորում Proteus- ում. Ներածություն. Բարև, սա Liono Maker- ն է, ահա YouTube- ի հղումը: Մենք ստեղծում ենք ստեղծագործական նախագիծ Arduino- ի հետ և աշխատում ներկառուցված համակարգերի վրա: Data-Logger: Տվյալների գրանցիչ (նաև տվյալների գրանցիչ կամ տվյալների գրանցիչ) էլեկտրոնային սարք է, որը ժամանակի ընթացքում գրանցում է տվյալները
NBIoT տվյալների փոխանցում Ինչպես օգտագործել BC95G մոդեմի վրա հիմնված վահան - UDP թեստ և ցանցի կարգավիճակի ազդանշան. 4 քայլ
NBIoT տվյալների փոխանցում Ինչպես օգտագործել BC95G մոդեմի վրա հիմնված վահան - UDP թեստ և ցանցի կարգավիճակի ազդանշան. Այս նախագծերի մասին. Փորձարկեք NB IoT ցանցի հնարավորությունները և UDP տվյալների հումքի փոխանցումը xyz -mIoT- ի միջոցով itbrainpower.net վահանի միջոցով, որը հագեցած է Quectel BC95G մոդեմով: Պահանջվող ժամանակ. 10-15 րոպե. Դժվարություն `միջանկյալ: Հայտնաբերում` կպցնելու հմտությունները պարտադիր են
Դռան զանգի ծանուցում լսողության խանգարումների համար `տան ավտոմատացման միջոցով (ESP-now, MQTT, Openhab). 3 քայլ
Դռան զանգի ծանուցում լսողության խանգարումների համար ՝ տան ավտոմատացման միջոցով (ESP-now, MQTT, Openhab). Այս հրահանգում ես ձեզ ցույց եմ տալիս, թե ինչպես եմ ինտեգրել իմ սովորական դռան զանգը իմ տան ավտոմատացման մեջ: Այս լուծումը լավ է պիտանի լսողության խնդիրներ ունեցող մարդկանց համար: Իմ դեպքում ես այն օգտագործում եմ ծանուցվելու համար, եթե սենյակը զբաղված է և աղմկոտ երեխաների ծննդյան տարեդարձին: Ես