Мазмұны:

MATLAB көмегімен ересектерге есту тестін қалай жасауға болады: 6 қадам
MATLAB көмегімен ересектерге есту тестін қалай жасауға болады: 6 қадам
Anonim
MATLAB көмегімен ересектерге есту тестін қалай жасауға болады
MATLAB көмегімен ересектерге есту тестін қалай жасауға болады

ЕСКЕРТУ: Біздің тест медициналық диагностика емес, сондықтан оны қолдануға болмайды. Есту қабілетін дәл өлшеу үшін медициналық маманға хабарласыңыз.

Бізде бар материалдарды қолдана отырып, біздің топ есту тестін жасады. Біздің тест ересектер мен жасөспірімдерге арналған, себебі балалардың есту қабілеті әртүрлі диапазонда болады және оны тек кәсіби маман ғана өлшеуі керек.

Бұл жоба біздің 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';

Хабарлама жәшіктері мен суреттердің үлкен кескіндерін ұсыну үшін біз сізге Фрэнсисті көрсетудің осы қызықты әдісін қолдандық. Өз қалауыңыз бойынша кескінді мына форматпен оқыңыз: айнымалы = imread ('nameofpicture.jpg');

Содан кейін imshow (айнымалы) көмегімен оны көрсетуді жалғастырыңыз; ол сіз оны іске қосқанда MatLab -те фигура ретінде пайда болады!

Әрі қарай, бүкіл кодта қолданылатын хабарламалар терезелері. uiwait () - uiwait үшін таңдалған фукция аяқталғанша код тоқтатылатын функция. Бұл таңдалған функция - msgbox ('хабарлама', 'тақырып', 'белгі')!

Сіз жоғарыдағы msgbox () пішімін ұстанатын болсаңыз, Фрэнсис айтатын хабарларды өзгертуге болады. Егер сіз Frances суреттерін қолданғыңыз келсе, 'icon' белгісін 'реттелетін' деп белгілеп, үтірмен және таңдалған суреттің кескінінің айнымалы мәнімен жалғастырыңыз! Сіз сондай -ақ алдын ала орнатылған «белгіше» түрлерін пайдалана аласыз. ол келесідей болуы керек:

сәлем = imread ('Regular.jpg'); % суретті uploadedimshow файлынан оқиды (сәлем); uiwait (msgbox ('Сәлеметсіз бе, біздің есту тестін таңдағаныңызға рахмет! Бұл - Фрэнсис, ол бүгін сіздің тестіңізге көмектеседі!', 'Қош келдіңіз!', 'салт', сәлем));

Содан кейін пайдаланушының жасын сұрайтын кірісті жасаңыз!

UserAge = input ('Біз бұл тестті бастамас бұрын, сіздің жасыңыз нешеде? (Мысалы, 32, 56,…) n', 's');

ЕСКЕРТПЕ: егер сандар біртүрлі болса және олардың саны тым көп болса, сіздің кодыңыз жұмыс істеп тұрған кезде бұрынғы цифрларды алып тастау үшін жабуды жабыңыз.

Содан кейін коммутатор корпусының құрылымын жасаңыз! Есіңізде болсын, пайдаланушы енгізуі жолда және оны сандық мәнге түрлендіру қажет. Сондықтан str2double (UserAge) пайдаланыңыз. Әр жағдайда 4 -тен 6 -ға дейін немесе 18 -ден 40 -қа дейінгі аралықтар болуы керек. Бір жағдайда расталатын айнымалы болуы үшін num2cell (массив) келесідей қолданылады:

switch str2double (UserAge) % айнымалы мәнді жолдан сандық мәнге ауыстырады num2cell (0: 3)

француздар = оқылған ('Egg.jpg');

imshow (француздар);

uiwait (msgbox ('Сіз ұрықсыз! Фрэнсис есту тестін оның орнына дәрігермен жүргізу керек деп ойлайды!', 'Тест қабылданбады!', 'салт', француз)));

қайтару

Пайдаланушының кодты жалғастыруына жол бермеу үшін бұрынғы топтар қайтарылуы керек.

Іс құрылымын аяқтауды және барлық фигураларды жабуды ұмытпаңыз.

2 -қадам: Дыбысты пайдаланушы үшін тексеріңіз

Дыбысты пайдаланушы үшін тексеріңіз
Дыбысты пайдаланушы үшін тексеріңіз

Бұл сегмент қатысушының өз құрылғысындағы дыбысының тым тыныш немесе тым қатты болмауын қамтамасыз ету үшін бар.

Пайдаланушыға ескерту беру үшін хабарлама терезесі пайда болады және дыбысты әрі қарай жалғастырмас бұрын пайдаланушыдан растауды күтеді: uiwait (msgbox ('Сынақ басталмас бұрын, біз дыбыс деңгейін тексеруге тырысамыз «) дұрыс! Дайын ба? ',' Күте тұр! ',' көмек ')));

Синусоидалық толқын 1 амплитудасы мен 1000 Гц үлгі жиілігімен ойнайды: T = [0: 1/SampleRate: 2]; y = 1*sin (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 = sin (2*pi*t*1000); (дыбыс функциясының кездейсоқ амплитудасы/дБ мәнін құру үшін оны кездейсоқ w шамасына көбейтуге болады: w = rand;)

Оң жақ құлақ үшін шығыс: Out = [нөлдер (size (t)); s] ';

Шығу код арқылы ойнатылады: дыбыс (Out, Fs)

Келесі қадам - бұл пайдаланушы дыбысты естіді ме, естімеді ме, ол туралы код жазбалары бар интерфейсті жасау.

Алдымен сіз фигура құрып, фигура пайда болатын орынды анықтайсыз: gcbf = figure ('pos', [30 800 350 150]);

*** Егер түйме сіз үшін пайда болмаса, фигураның орналасуы, жоғарыда көрсетілгендей, сіздің компьютеріңіз үшін дұрыс емес орналасуы мүмкін. Бұл мәселені шешу үшін 30 және 800 мәндерін өзіңіз қалаған позицияға өзгертіңіз. Мысалы, [0 0 350 150] болса, монитордың төменгі сол жағындағы gui түймесін шығарады. ***

Пайдаланушы дыбысты естіген кезде жазу үшін қосқыш түймешік жасалады, ал орналасуы мен дисплейін реттеуге болады: tb = uicontrol ('Style', 'togglebutton', 'String', 'Дыбысты естігенде түймені басу', ' тег ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; жабу (gcbf); '); Бұл кодта түйіндеме бар және түйме басылса бос векторлар мән қосады.

Содан кейін түйменің жауабын қабылдау үшін күту функциясын жасаңыз және басылған кезде түймедегі кодты іске қосыңыз: h = randi ([4, 7]); uiwait (gcbf, h); (біз кездейсоқ шаманы жасадық, сондықтан қатысушылар алдауға және жауап беру үшін қажетті секунд санын анықтай алмады.)

Цикл аяқталғаннан кейін жиілік шығысының айнымалы мәнін (freq_right) Гц -те сақтаңыз, сондықтан оны жалғыз қалдырыңыз. Содан кейін dB_right айнымалы мәнін амперден децибелге түрлендіріңіз: dB_right = mag2db (amp_right)*(-1);

Содан кейін функцияны қосыңыз: барлығын жабыңыз. бұл пайда болған қажетсіз фигуралардан шығады.

Пайдаланушыға сол жақ құлақты реттеуге және дайындауға уақыт беру үшін шамамен 10 секунд үзіліс функциясын қосыңыз.

4 -қадам: Сол жақ құлақ үшін бірдей кодты жасаңыз

Сол жақ құлақ үшін бірдей кодты жасаңыз
Сол жақ құлақ үшін бірдей кодты жасаңыз

Сол құлақты тексеретін келесі сегментті жасау үшін оң жақ құлаққа арналған кодты қайталаңыз. Жалғыз айырмашылық дыбыстың шығатын арнаның өзгеруінде. Ол үшін Out айнымалысы үшін массив мәндерінің ретін аударыңыз. Ол келесідей болуы керек:

Шығу = [s; нөлдер (өлшемі (t))] ';

Осылайша оң жақтан сол жақтан басқа дыбыс шықпайды!

5-қадам: Деректерді салыстыру үшін қатарлас сурет жасаңыз

Деректерді салыстыру үшін қатарлас фигура жасаңыз
Деректерді салыстыру үшін қатарлас фигура жасаңыз
Деректерді салыстыру үшін қатарлас фигура жасаңыз
Деректерді салыстыру үшін қатарлас фигура жасаңыз

Енді деректерді көрсету үшін график жасаңыз! Сіз екі графикті бір фигураға енгізесіз, сондықтан мұны жасаңыз!

сурет (1); қосалқы жоспар (1, 2, 1); *** екіншісінің қосалқы жоспары (1, 2, 2)

Әрбір қосымша алаңға осы түстер мен координаталары бар патчтарды қосыңыз. Бұл бөлім есту қабілетінің жоғалу дәрежесіне байланысты. Сол сияқты:

патч ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % сары түс бойынша % қосалқы жоспар енді келесі түзетулер мен шашыраңқы нүктелерді сақтайды

мәтін (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-мәні, сол құлақNat_dBL = [10 3 10 15 10 15]; % y мәні

Nat_FreqR = [250 500 1000 2000 4000 8000]; % оң құлақ

Nat_dBR = [10 5 10 15 10 15];

Шашыраңқы диаграммалар сол және оң жақтарды ажыратуы керек. Сіз кресттер мен шеңберлер жасай аласыз!

NL = шашыраңқы (Nat_FreqL, Nat_dBL, 'bx'); % қиылысқан көк нүктелерNR = шашырау (Nat_FreqR, Nat_dBR, 'ro'); % қызыл шеңберлерді сызады

Ұлттық графикке арнайы айнымалыларды тағайындау арқылы легенда жасаңыз: аңыз ([NL NR], {'title1', 'title2'});

X шекті 250 -ден 8000 Гц -ке, ал y -10 -дан 120 дБ -ге дейін орнатыңыз. Yticks () көмегімен тік кенелеріңізді өзгертуді ұмытпаңыз.

X осін «жиілік Гц» және у осін «Pitch dB» деп белгілеңіз.

Ax = gca көмегімен осьті жинау арқылы y осін кері айналдырыңыз

Содан кейін y бағытының қасиетін оған байлаңыз: ax. YDir = 'reverse

Енді екіншінің коды шамамен бірдей, бірақ аңызсыз және шашырау нүктелерін сол және оң жақтан айнымалылармен суреттеу.

Мұның бәрінен кейін, пайдаланушы өз нәтижелерін қарауы үшін шамамен 10 секундқа кідірту функциясын қосыңыз.

6 -қадам: Егер сіз қаласаңыз, сәл рахмет хабарламасын қосыңыз

Егер сіз қаласаңыз, сәл рахмет хабарламасын қосыңыз!
Егер сіз қаласаңыз, сәл рахмет хабарламасын қосыңыз!

Бұл сізге рақмет пен қоштасу үшін басқа imread (), imshow () және uiwait (msgbox ()) қосуды қаласаңыз, бұл тек көңіл көтеру үшін! Бұдан басқа clf қоюды ұмытпаңыз; бәрін жабу; clc; бәрін жабу үшін. Жақсы жұмыс жасадыңыз!

Ұсынылған: