विषयसूची:

MATLAB का उपयोग करके वयस्क श्रवण परीक्षण कैसे करें: 6 चरण
MATLAB का उपयोग करके वयस्क श्रवण परीक्षण कैसे करें: 6 चरण

वीडियो: MATLAB का उपयोग करके वयस्क श्रवण परीक्षण कैसे करें: 6 चरण

वीडियो: MATLAB का उपयोग करके वयस्क श्रवण परीक्षण कैसे करें: 6 चरण
वीडियो: Biopsy test कैसे किया जाता है - Biopsy की रिपोर्ट कैसे देखते है - Excisional & Incisional biopsy 2024, जुलाई
Anonim
MATLAB का उपयोग करके वयस्क श्रवण परीक्षण कैसे करें
MATLAB का उपयोग करके वयस्क श्रवण परीक्षण कैसे करें

अस्वीकरण: हमारा परीक्षण एक चिकित्सा निदान नहीं है और इसका उपयोग इस तरह नहीं किया जाना चाहिए। सुनने की क्षमता को सटीक रूप से मापने के लिए, कृपया किसी चिकित्सकीय पेशेवर से मिलें।

हमारे पास पहले से मौजूद सामग्रियों का उपयोग करते हुए, हमारे समूह ने श्रवण परीक्षण किया। हमारा परीक्षण केवल वयस्कों और किशोरों के उपयोग के लिए है क्योंकि छोटे बच्चों की सुनवाई विभिन्न श्रेणियों में आती है और इसे केवल एक पेशेवर द्वारा मापा जाना चाहिए।

यह परियोजना हमारी बीएमई मैटलैब कक्षा में काम करते हुए और साइन तरंगों द्वारा बनाई गई ध्वनियों के साथ खेलते समय प्रेरित हुई थी। हम विभिन्न पिचों पर ध्वनि चलाने के लिए साइन वेव को बदलने के तरीकों में रुचि रखते थे।

इस परियोजना के लिए हमें केवल MATLAB R2018b चलाने वाला एक कंप्यूटर और ईयरबड की एक जोड़ी की आवश्यकता थी। हमने कार्यक्रम को और अधिक हास्यप्रद बनाने के लिए एक मूल चरित्र, फ्रांसिस को शुभंकर के रूप में शामिल किया।

चरण 1: उपयोगकर्ता की आयु का विश्लेषण करने के लिए एक उपयोगकर्ता इनपुट बनाएं

उपयोगकर्ता की आयु का विश्लेषण करने के लिए उपयोगकर्ता इनपुट बनाएं
उपयोगकर्ता की आयु का विश्लेषण करने के लिए उपयोगकर्ता इनपुट बनाएं
उपयोगकर्ता की आयु का विश्लेषण करने के लिए उपयोगकर्ता इनपुट बनाएं
उपयोगकर्ता की आयु का विश्लेषण करने के लिए उपयोगकर्ता इनपुट बनाएं

इस कोड का पहला भाग एक उपयोगकर्ता इनपुट बनाना है जो यह तय करता है कि क्या वे श्रवण परीक्षण करने के लिए आगे बढ़ने के लिए पर्याप्त पुराने हैं। हमारे शुभंकर, फ्रांसिस की मूर्खतापूर्ण तस्वीरों को भी जोड़कर ऐसा क्यों नहीं करते? ऐसा करने के लिए, शामिल ज़िप फ़ाइल को डाउनलोड करें और फिर इसे उस फ़ाइल में निकालें जिसे कोड में खींचा जा सकता है। इसका उपयोग करके चित्रों से भरी फ़ाइल को बैच अपलोड करने के लिए आगे बढ़ें:

Dir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings';GetDir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings\*.jpg';

संदेश बॉक्स और चित्रों की बड़ी छवियों को प्रस्तुत करने के लिए, हमने आपको फ्रांसिस दिखाने की इस मजेदार विधि का उपयोग किया। बस अपनी पसंद की छवि को प्रारूप के साथ इम्रेड करें: वेरिएबल = इमरीड ('nameofPicture.jpg');

फिर imshow(variable) का उपयोग करके इसे दिखाने के लिए आगे बढ़ें; जब आप इसे चलाते हैं तो यह आपके MatLab में एक आकृति के रूप में दिखाई देगा!

अगला संदेश बॉक्स हैं जो पूरे कोड में उपयोग किए जाते हैं। uiwait() एक फ़ंक्शन है जिसमें कोड को तब तक रोक दिया जाता है जब तक कि uiwait के लिए चुना गया फ़क्शन समाप्त नहीं हो जाता। यह चुना हुआ कार्य है msgbox('message', 'title', 'icon')!

जब तक आप ऊपर दिए गए msgbox() प्रारूप का पालन करते हैं, तब तक आप फ्रांसिस द्वारा कहे गए संदेशों को बदलने के लिए स्वतंत्र महसूस कर सकते हैं। यदि आप फ्रांसिस चित्रों का उपयोग करना चाहते हैं, तो 'आइकन' को 'कस्टम' के रूप में लेबल करें और इसे अल्पविराम और आपके द्वारा चुने गए चित्र के इमरीड के चर के साथ आगे बढ़ें! आप प्रीसेट 'आइकन' प्रकारों का भी उपयोग कर सकते हैं। इसे ऐसा दिखना चाहिए:

हाय = इमरीड ('Regular.jpg'); % फ़ाइल अपलोडिमशो (हाय) से छवि को पढ़ता है; uiwait(msgbox('नमस्कार और हमारे श्रवण परीक्षण को चुनने के लिए धन्यवाद! यह फ्रांसेस है और वह आज आपके परीक्षण में आपकी मदद करेगा!', 'स्वागत!', 'कस्टम', हाय));

इसके बाद एक इनपुट बनाएं जो उपयोगकर्ता की उम्र को इस तरह पूछता है!

UserAge = इनपुट ('इस परीक्षण को शुरू करने से पहले, आप कितने साल (वर्ष) हैं? (जैसे 32, 56, …)\n', 's');

नोट: यदि आंकड़े अजीब हो रहे हैं और बहुत अधिक हैं, तो अपने कोड के चलने पर पहले के आंकड़ों को हटाने के लिए सभी को बंद करें का उपयोग करें

फिर एक स्विच केस स्ट्रक्चर बनाएं! याद रखें कि उपयोगकर्ता इनपुट स्ट्रिंग में है और आपको इसे एक संख्यात्मक मान में बदलने की आवश्यकता है। तो str2double (UserAge) का उपयोग करें। प्रत्येक मामले में 4 से 6 या 18 से 40 की आयु की सीमा होनी चाहिए। किसी एक मामले के लिए वेरिएबल को सत्य के रूप में सत्यापित करने के लिए num2cell (सरणी) का उपयोग करें जैसे:

स्विच str2double(UserAge)% परिवर्तन चर एक स्ट्रिंग से एक संख्यात्मक मान मामले में num2cell(0:3)

फ़्रांसिस = इमरीड ('एग.जेपीजी');

इम्शो (फ्रांस);

uiwait(msgbox('आप एक भ्रूण हैं! फ्रांसिस सोचता है कि आपको इसके बजाय एक डॉक्टर के साथ अपना श्रवण परीक्षण करना चाहिए!', 'टेस्ट अस्वीकृत!', 'कस्टम', फ़्रांसिस));

वापसी

उपयोगकर्ता को कोड के साथ आगे बढ़ने से रोकने के लिए पहले के समूहों को वापस कर दिया जाना चाहिए।

केस संरचना को समाप्त करना और सभी आंकड़े बंद करना याद रखें।

चरण 2: उपयोगकर्ता के लिए ऑडियो का परीक्षण करें

उपयोगकर्ता के लिए ऑडियो का परीक्षण करें
उपयोगकर्ता के लिए ऑडियो का परीक्षण करें

यह खंड यह सुनिश्चित करने के लिए मौजूद है कि उनके डिवाइस पर प्रतिभागी की आवाज न तो बहुत शांत है और न ही बहुत तेज है।

उपयोगकर्ता को कुछ चेतावनी देने के लिए एक संदेश बॉक्स पॉप अप होता है और ध्वनि के साथ आगे बढ़ने से पहले उपयोगकर्ता से पुष्टि की प्रतीक्षा करता है: uiwait(msgbox('परीक्षण शुरू होने से पहले, हम आपकी मात्रा सुनिश्चित करने के लिए एक ऑडियो परीक्षण करना चाहते हैं) सही है! तैयार हैं?', 'रुको!', 'सहायता'));

एक साइन लहर 1 के आयाम और 1000 हर्ट्ज की नमूना दर के साथ खेली जाती है: टी = [0: 1/नमूना दर: 2]; वाई = 1 * पाप (2 * पीआई * 200 * टी); ध्वनि (वाई, नमूना दर);

उपयोगकर्ता से तब उपयोगकर्ता द्वारा इनपुट की गई प्रतिक्रिया के साथ एक प्रश्न पूछा जाता है: Q = इनपुट ('क्या आप ध्वनि सुन सकते हैं? [y/n] n', 's');

फिर कुछ समय लगता है जब Q == 'n', यदि सत्य है तो ध्वनि दोहराई जाती है और उपयोगकर्ता से फिर से पूछा जाता है जब तक कि उत्तर 'n' से 'y' में बदल नहीं जाता है: जबकि Q == 'n' अगर strcmp(Q, 'n') disp('अपने कंप्यूटर का वॉल्यूम तेज करें।'); प्रतीक्षा_ध्वनि; विराम(2); क्यू = इनपुट ('क्या आप अब ध्वनि सुन सकते हैं? [y/n] n', 's'); अंत अंत

फिर कोड के वास्तविक परीक्षा भाग को आगे बढ़ाने से पहले प्रतीक्षा करने का एक क्षण है।

चरण 3: दाहिने कान के लिए ऑडियोमेट्री टेस्ट करें

दाहिने कान के लिए ऑडियोमेट्री टेस्ट कराएं
दाहिने कान के लिए ऑडियोमेट्री टेस्ट कराएं

इस कोड में, प्रत्येक व्यक्तिगत कान के लिए अलग-अलग आवृत्तियों और वॉल्यूम के साथ 6 पुनरावृत्तियों के लिए एक लूप चलेगा। आप जिस कान का परीक्षण करना चाहते हैं उसके आधार पर, आउट वैरिएबल में एक पंक्ति में ध्वनि और दूसरी में शून्य होगी।

पहले आप दो खाली लाइन वेक्टर बनाते हैं जो उपयोगकर्ता द्वारा सुनी जाने वाली ध्वनि की आवृत्तियों और आयाम को रिकॉर्ड करते हैं।

यदि आप बजाई गई आवृत्तियों और आयाम को यादृच्छिक बनाना चाहते हैं तो यह भाग लूप के लिए अनुक्रमित में है, हालांकि आप कितनी ध्वनियां बजाना चाहते हैं।

एफ आवृत्ति है: आर = (रैंड * 10000); एफएस = 250 + आर; (रैंड फ़ंक्शन एक बेतरतीब ढंग से उत्पन्न आवृत्ति बनाने के लिए है) t समय की एक निश्चित मात्रा है जो इसके द्वारा निर्धारित होती है: t = linspace(0, Fs*2, Fs*2); s साइन वेव है: s = sin(2*pi*t*1000); (ध्वनि फ़ंक्शन के लिए यादृच्छिक आयाम/डीबी मान बनाने के लिए इसे यादृच्छिक चर w से गुणा किया जा सकता है: w = रैंड;)

दाहिने कान के लिए आउटपुट है: आउट = [शून्य (आकार (टी)); एस]';

आउटपुट कोड के माध्यम से खेला जाता है: ध्वनि (आउट, एफएस)

अगला कदम कोड रिकॉर्ड के साथ यूजर इंटरफेस बनाना है कि यूजर ने आवाज सुनी या नहीं।

पहले आप एक आकृति बनाएं और उस स्थिति का निर्धारण करें जिसमें आकृति दिखाई देगी: gcbf = आकृति ('स्थिति', [३० ८०० ३५० १५०]);

***यदि बटन आपके लिए प्रकट नहीं होता है, तो आकृति की स्थिति, जैसा कि ऊपर सरणी द्वारा दिखाया गया है, आपके कंप्यूटर के लिए गलत स्थिति में हो सकती है। इसे हल करने के लिए, 30 और 800 मानों को अपनी इच्छानुसार किसी भी स्थिति में बदलें। उदाहरण के लिए, [0 0 350 150] होने से मॉनिटर के नीचे बाईं ओर गुई बटन दिखाई देगा।***

जब उपयोगकर्ता ध्वनि सुनता है तो रिकॉर्ड करने के लिए एक टॉगलबटन बनाया जाता है, और स्थिति और प्रदर्शन को अनुकूलित किया जा सकता है: tb = uicontrol('Style', 'togglebutton', 'String', 'जब आप ध्वनि सुनते हैं तो बटन दबाएं', ' tag', 'togglebutton1', 'Position', [30 60 300 40], 'Callback', 'uiresume(gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close(gcbf);'); इस विशेष कोड में कोड फिर से शुरू होता है और खाली वेक्टर बटन दबाए जाने पर एक मान जोड़ते हैं।

फिर बटन की प्रतिक्रिया लेने के लिए एक प्रतीक्षा फ़ंक्शन बनाएं और दबाए जाने पर बटन में कोड सक्रिय करें: एच = रैंडी ([4, 7]); यूआईवाइट (जीसीबीएफ, एच); (हमने यादृच्छिक चर h किया ताकि प्रतिभागी धोखा न दे सकें और प्रतिक्रिया देने के लिए आवश्यक सेकंड की संख्या निर्धारित कर सकें।)

लूप समाप्त होने के बाद, फ़्रीक्वेंसी आउटपुट वैरिएबल (freq_right) को Hz में रखें इसलिए इसे अकेला छोड़ दें। फिर समीकरण का उपयोग करके dB_right चर को amps से डेसिबल में बदलें: dB_right = mag2db(amp_right)*(-1);

फिर फ़ंक्शन जोड़ें: सभी को बंद करें। यह किसी भी अनावश्यक आंकड़े से बाहर निकल जाएगा जो पॉप अप हो सकता है।

उपयोगकर्ता को समायोजित करने और बाएं कान के लिए तैयार करने के लिए समय देने के लिए, लगभग 10 सेकंड के लिए एक विराम समारोह जोड़ें।

चरण 4: बाएं कान के लिए समान कोड बनाएं

बाएं कान के लिए समान कोड बनाएं
बाएं कान के लिए समान कोड बनाएं

बाएं कान का परीक्षण करने वाला अगला खंड बनाने के लिए दाएं कान के लिए उपयोग किए गए कोड को दोहराएं। फर्क सिर्फ इतना है कि यह बदल रहा है कि ध्वनि किस आउटपुट चैनल से आएगी। ऐसा करने के लिए, वेरिएबल आउट के लिए सरणी मानों के क्रम को फ़्लिप करें। इसे ऐसा दिखना चाहिए:

आउट = [एस; शून्य (आकार (टी))]';

ऐसा करने से दाएँ चैनल से कोई आवाज़ नहीं बल्कि बाएँ चैनल से आवाज़ निकलेगी!

चरण 5: डेटा की तुलना करने के लिए एक साथ-साथ चित्र बनाएं

डेटा की तुलना करने के लिए एक साथ-साथ चित्र बनाएं
डेटा की तुलना करने के लिए एक साथ-साथ चित्र बनाएं
डेटा की तुलना करने के लिए एक साथ-साथ चित्र बनाएं
डेटा की तुलना करने के लिए एक साथ-साथ चित्र बनाएं

अब डेटा दिखाने के लिए एक ग्राफ बनाएं! आप एक ही आकृति में दो रेखांकन डाल रहे हैं इसलिए ऐसा करें!

आकृति (1); सबप्लॉट (1, 2, 1); ***सबप्लॉट(1, 2, 2) दूसरे के लिए

प्रत्येक सबप्लॉट के लिए, इन पैच में विशिष्ट रंगों और निर्देशांक के साथ जोड़ें। श्रवण हानि की डिग्री कितनी बड़ी है, इस पर निर्भर करते हुए ये खंड ग्राफ़ से बाहर हैं। इस तरह:

पैच ([२५० ८००० ८००० २५०], [२५ २५ -10 -10], [१.००, ०.८९, ०.२९]); % येलोहोल्ड% पर सबप्लॉट अब निम्नलिखित पैच और स्कैटरप्लॉट धारण करेगा

पाठ (3173, 8, 'सामान्य');

पैच ([२५० ८००० ८००० २५०], [४० ४० 25 २५], [० ०.७५ ०.२५]); % हरा

पाठ (3577, 33, 'हल्का');

पैच ([२५० ८००० ८००० २५०], [५५ ५५ ४० ४०], [०.१६, ०.८७, ०.८७]); % सियान

पाठ (2870, 48, 'मध्यम');

पैच ([२५० ८००० ८००० २५०], [७० ७० ५५ ५५], [०.२२, ०.३६, ०.९४]); % नीला

पाठ (१७३९, ६२, 'मामूली गंभीर');

पैच ([२५० ८००० ८००० २५०], [९० ९० ७० ७०], [०.७८, ०.२४, ०.७८]); % नील लोहित रंग का

पाठ (3142, 80, 'गंभीर');

पैच ([२५० ८००० ८००० २५०], [१२० १२० ९० ९०], [०.९६, ०.२४, ०.२४]); % लाल

पाठ (3200, 103, 'गहरा')

फिर बाएँ और दाएँ स्कैटर प्लॉट जोड़ें! हम आपके लिए एक सामान्य राष्ट्रीय औसत प्रदान कर सकते हैं! यहां:

Nat_FreqL = [२५० ५०० १००० २००० ४००० ८०००]; % x-मान, बायां कानNat_dBL = [१० ३ १० १५ १० १५]; % y-मान

Nat_FreqR = [२५० ५०० १००० २००० ४००० ८०००]; % दाहिना कान

Nat_dBR = [१० ५ १० १५ १० १५];

तितर बितर भूखंडों को बाएँ और दाएँ बिंदुओं को समझना चाहिए। आप क्रॉस और सर्कल कर सकते हैं!

NL = स्कैटर (Nat_FreqL, Nat_dBL, 'bx'); % प्लॉट ब्लू क्रॉस पॉइंटNR = स्कैटर (Nat_FreqR, Nat_dBR, 'ro'); % भूखंड लाल घेरे

विशिष्ट चरों को निर्दिष्ट करके राष्ट्रीय ग्राफ के लिए एक किंवदंती बनाएं: किंवदंती ([एनएल एनआर], {'शीर्षक 1', 'शीर्षक 2'});

अपनी x सीमा 250 से 8000 Hz और अपनी y सीमा -10 से 120 dB तक सेट करें। अपने वर्टिकल टिक को yticks() से बदलना याद रखें

अपने x अक्ष को "फ़्रीक्वेंसी Hz" और अपने y अक्ष को "पिच dB" लेबल करें।

कुल्हाड़ी = gca. के साथ अक्ष को इकट्ठा करके y अक्ष को उलट दें

फिर y दिशा की संपत्ति को इसके साथ बांधें: ax. YDir = 'reverse

अब दूसरे के लिए कोड लगभग समान है, लेकिन लेजेंड के बिना और बाएं और दाएं परीक्षणों के चर के साथ स्कैटरप्लॉट्स को रेखांकन किए बिना।

इन सबके बाद करीब 10 सेकेंड के लिए पॉज फंक्शन जोड़ें ताकि यूजर अपना रिजल्ट देख सके।

चरण 6: यदि आप चाहें तो थोड़ा धन्यवाद संदेश जोड़ें

यदि आप चाहें तो थोड़ा धन्यवाद संदेश जोड़ें!
यदि आप चाहें तो थोड़ा धन्यवाद संदेश जोड़ें!

यह केवल मनोरंजन के लिए है यदि आप चाहें, लेकिन धन्यवाद और विदाई के लिए एक और imread (), imshow () और uiwait (msgbox ()) जोड़ें! इसके अलावा, clf डालना याद रखें; सब बंद करें; सीएलसी; सब कुछ बंद करने के लिए। अच्छा काम आपने किया!

सिफारिश की: