সুচিপত্র:

MATLAB ব্যবহার করে প্রাপ্তবয়স্ক শ্রবণ পরীক্ষা কিভাবে করবেন: 6 টি ধাপ
MATLAB ব্যবহার করে প্রাপ্তবয়স্ক শ্রবণ পরীক্ষা কিভাবে করবেন: 6 টি ধাপ

ভিডিও: MATLAB ব্যবহার করে প্রাপ্তবয়স্ক শ্রবণ পরীক্ষা কিভাবে করবেন: 6 টি ধাপ

ভিডিও: MATLAB ব্যবহার করে প্রাপ্তবয়স্ক শ্রবণ পরীক্ষা কিভাবে করবেন: 6 টি ধাপ
ভিডিও: পরিত্যক্ত রাস্তা | সম্পূর্ণ সিনেমা - বাংলা | হরর 2024, নভেম্বর
Anonim
কিভাবে MATLAB ব্যবহার করে প্রাপ্তবয়স্ক শ্রবণ পরীক্ষা করা যায়
কিভাবে MATLAB ব্যবহার করে প্রাপ্তবয়স্ক শ্রবণ পরীক্ষা করা যায়

অস্বীকৃতি: আমাদের পরীক্ষা একটি মেডিক্যাল ডায়াগনস্টিক নয় এবং এইভাবে ব্যবহার করা উচিত নয়। সঠিকভাবে শ্রবণ পরিমাপ করার জন্য, দয়া করে একজন মেডিকেল প্রফেশনালকে দেখুন।

আমাদের গোষ্ঠীগুলি ইতিমধ্যেই ব্যবহার করে, আমাদের গ্রুপ একটি শ্রবণ পরীক্ষা করেছে। আমাদের পরীক্ষা শুধুমাত্র প্রাপ্তবয়স্ক এবং কিশোরদের ব্যবহারের জন্য কারণ ছোট বাচ্চাদের শ্রবণশক্তি বিভিন্ন পরিসরে আসে এবং শুধুমাত্র একজন পেশাদার দ্বারা পরিমাপ করা উচিত।

এই প্রকল্পটি আমাদের BME 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 (পরিবর্তনশীল) ব্যবহার করে এটি দেখানোর জন্য এগিয়ে যান; যখন আপনি এটি চালাবেন তখন এটি আপনার ম্যাটল্যাবে একটি চিত্র হিসাবে প্রদর্শিত হবে!

এরপরে বার্তা বাক্সগুলি রয়েছে যা পুরো কোড জুড়ে ব্যবহৃত হয়। uiwait () একটি ফাংশন যেখানে কোডটি বন্ধ থাকে যতক্ষণ না uiwait এর জন্য নির্বাচিত ফাংশনটি শেষ হয়। এই নির্বাচিত ফাংশন হল মেসবক্স ('বার্তা', 'শিরোনাম', 'আইকন')!

ফ্রান্সিসের বার্তাগুলি পরিবর্তন করার জন্য আপনি নির্দ্বিধায় অনুভব করতে পারেন যতক্ষণ আপনি উপরের বার্তা বাক্স () বিন্যাসটি অনুসরণ করেন। আপনি যদি ফ্রান্সেস ছবি ব্যবহার করতে চান, 'আইকন' কে 'কাস্টম' হিসেবে লেবেল করুন এবং কমা এবং আপনার চয়ন করা ছবির ইম্রেডের ভেরিয়েবল দিয়ে এগিয়ে যান! আপনি প্রিসেট 'আইকন' প্রকারগুলিও ব্যবহার করতে পারেন। এটিকে ঐটির মত দেখতে হবে:

hi = imread ('Regular.jpg'); % ফাইল আপলোড করা ছবি থেকে দেখায় (হাই); uiwait (মেসেজবক্স ('হ্যালো এবং আমাদের শ্রবণ পরীক্ষা বেছে নেওয়ার জন্য আপনাকে ধন্যবাদ! এটি ফ্রান্সিস এবং তিনি আজ আপনার পরীক্ষা দিয়ে আপনাকে সাহায্য করবেন!', 'স্বাগতম!', 'কাস্টম', হাই));

এরপরে একটি ইনপুট তৈরি করুন যা ব্যবহারকারীর বয়স জিজ্ঞাসা করে!

UserAge = ইনপুট ('আমরা এই পরীক্ষা শুরু করার আগে, আপনার বয়স কত (বছর)? (যেমন 32, 56, …) n', 's');

দ্রষ্টব্য: যদি পরিসংখ্যানগুলি অদ্ভুত হয় এবং সেখানে অনেক বেশি থাকে, তবে আপনার কোডটি চালানোর সময় আগের পরিসংখ্যানগুলি সরানোর জন্য সবগুলি বন্ধ করুন।

তারপর একটি সুইচ কেস স্ট্রাকচার তৈরি করুন! মনে রাখবেন যে ব্যবহারকারীর ইনপুট স্ট্রিংয়ে রয়েছে এবং আপনাকে এটি একটি সংখ্যাসূচক মান রূপান্তর করতে হবে। সুতরাং str2double (UserAge) ব্যবহার করুন। প্রতিটি ক্ষেত্রে বয়স 4 থেকে 6 অথবা 18 থেকে 40 এর মতো হওয়া উচিত।

str2double (UserAge) % সুইচ করুন

frances = imread ('Egg.jpg');

imshow (ফ্রান্স);

uiwait (msgbox ('আপনি একটি ভ্রূণ! ফ্রান্সিস মনে করেন আপনার ডাক্তারের সাথে আপনার শ্রবণ পরীক্ষা করা উচিত!', 'পরীক্ষা অস্বীকার!', 'কাস্টম', ফ্রান্স));

প্রত্যাবর্তন

ব্যবহারকারীদের কোড দিয়ে এগিয়ে যেতে বাধা দেওয়ার জন্য আগের গ্রুপগুলি ফেরত দেওয়া উচিত।

কেস কাঠামো শেষ করতে এবং সমস্ত পরিসংখ্যান বন্ধ করতে মনে রাখবেন।

ধাপ 2: ব্যবহারকারীর জন্য অডিও পরীক্ষা করুন

ব্যবহারকারীর জন্য অডিও পরীক্ষা করুন
ব্যবহারকারীর জন্য অডিও পরীক্ষা করুন

এই সেগমেন্টের অস্তিত্ব নিশ্চিত করার জন্য যে তাদের ডিভাইসে অংশগ্রহণকারীর শব্দ খুব শান্ত বা খুব জোরে নয়।

ব্যবহারকারীকে কিছু সতর্কবার্তা দেওয়ার জন্য একটি বার্তা বাক্স পপ আপ করে এবং ব্যবহারকারীর কাছ থেকে নিশ্চিত হওয়ার জন্য অপেক্ষা করে শব্দটি চালিয়ে যাওয়ার আগে: ঠিক আছে! রেডি? ',' হোল্ড! ',' হেল্প '));

একটি সাইন ওয়েভ 1 এর একটি প্রশস্ততা এবং 1000 Hz এর নমুনা হার দিয়ে বাজানো হয়: 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); প্রশ্ন = ইনপুট ('আপনি কি এখন শব্দ শুনতে পাচ্ছেন? [Y/n] n', 's'); শেষ শেষ

কোডের প্রকৃত পরীক্ষার অংশটি বহন করার আগে অপেক্ষা করার একটি মুহূর্ত আছে।

ধাপ 3: ডান কানের জন্য অডিওমেট্রি পরীক্ষা করুন

ডান কানের জন্য অডিওমেট্রি পরীক্ষা করুন
ডান কানের জন্য অডিওমেট্রি পরীক্ষা করুন

এই কোডে, প্রতিটি পৃথক কানের জন্য বিভিন্ন ফ্রিকোয়েন্সি এবং ভলিউম সহ 6 টি পুনরাবৃত্তির জন্য একটি লুপ চলবে। আপনি যে কানের পরীক্ষা করতে চান তার উপর নির্ভর করে, আউট ভেরিয়েবলের এক সারিতে শব্দ এবং অন্যটিতে শূন্য থাকবে।

প্রথমে আপনি ব্যবহারকারীর শোনার ফ্রিকোয়েন্সি এবং প্রশস্ততা রেকর্ড করতে দুটি খালি লাইন ভেক্টর তৈরি করুন।

এই অংশটি লুপের জন্য একটি ইনডেক্সেড আছে তবে আপনি যদি বাজানো ফ্রিকোয়েন্সি এবং প্রশস্ততাকে র্যান্ডমাইজ করতে চান তবে আপনি অনেক শব্দ বাজাতে চান।

F হল ফ্রিকোয়েন্সি: r = (Rand*10000); Fs = 250 + r; (র্যান্ড ফাংশন হল এলোমেলোভাবে উৎপন্ন ফ্রিকোয়েন্সি তৈরি করা) s হল সাইন ওয়েভ: s = sin (2*pi*t*1000); (সাউন্ড ফাংশনের জন্য একটি এলোমেলো প্রশস্ততা/ডিবি মান তৈরি করতে এটিকে র্যান্ডম ভেরিয়েবল w দ্বারা গুণ করা যেতে পারে: w = rand;)

ডান কানের আউটপুট হল: আউট = [শূন্য (আকার (টি)); s] ';

আউটপুটগুলি কোডের মাধ্যমে বাজানো হয়: শব্দ (আউট, এফএস)

পরবর্তী ধাপ হল ব্যবহারকারীর শব্দ শুনেছে কি না, কোড রেকর্ড সহ একটি ইউজার ইন্টারফেস তৈরি করা।

প্রথমে আপনি একটি চিত্র তৈরি করুন এবং চিত্রটি কোন অবস্থানে প্রদর্শিত হবে তা নির্ধারণ করুন: gcbf = চিত্র ('pos', [30 800 350 150]);

*** যদি বোতামটি আপনার জন্য উপস্থিত না হয়, তাহলে উপরের অ্যারে দ্বারা দেখানো চিত্রের অবস্থান আপনার কম্পিউটারের জন্য ভুল অবস্থান করতে পারে। এটি সমাধান করার জন্য, 30 এবং 800 এর মানগুলি যে অবস্থানে আপনি চান তা পরিবর্তন করুন। উদাহরণস্বরূপ, [0 0 350 150] থাকলে মনিটরের নীচে বাম দিকে গুই বোতামটি তৈরি হবে।

ব্যবহারকারী শব্দ শোনার সময় রেকর্ড করার জন্য একটি টগলবাটন তৈরি করা হয়, এবং অবস্থান এবং ডিসপ্লে কাস্টমাইজ করা যায়: tb = uicontrol ('স্টাইল', 'টগলবাটন', 'স্ট্রিং', 'আপনি একটি শব্দ শুনলে বোতাম টিপুন', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf);); এই নির্দিষ্ট কোডটিতে কোড রিজিউম আছে এবং বোতাম টিপলে খালি ভেক্টর একটি মান যোগ করে।

তারপরে বাটনের প্রতিক্রিয়া গ্রহণের জন্য একটি অপেক্ষা ফাংশন তৈরি করুন এবং বোতামটি চাপলে কোডটি সক্রিয় করুন: h = randi ([4, 7]); uiwait (gcbf, h); (আমরা এলোমেলো পরিবর্তনশীল h করেছি যাতে অংশগ্রহণকারীরা প্রতারণা করতে না পারে এবং প্রতিক্রিয়া জানাতে প্রয়োজনীয় সেকেন্ডের সংখ্যা নির্ধারণ করতে পারে না।)

লুপ শেষ হওয়ার পরে, ফ্রিকোয়েন্সি আউটপুট ভেরিয়েবল (freq_right) Hz এ রাখুন তাই এটি একা ছেড়ে দিন। তারপর dB_right ভেরিয়েবলকে amps থেকে decibels এ সমীকরণ ব্যবহার করে রূপান্তর করুন: dB_right = mag2db (amp_right)*(-1);

তারপর ফাংশন যোগ করুন: সব বন্ধ করুন। এটি যে কোনও অপ্রয়োজনীয় পরিসংখ্যান থেকে বেরিয়ে আসবে যা পপ আপ হতে পারে।

একটি বিরতি ফাংশন যোগ করুন, প্রায় 10 সেকেন্ড, যাতে ব্যবহারকারীকে বাম কানের জন্য সামঞ্জস্য এবং প্রস্তুতির সময় দিতে পারে।

ধাপ 4: বাম কানের জন্য একই কোড তৈরি করুন

বাম কানের জন্য একই কোড তৈরি করুন
বাম কানের জন্য একই কোড তৈরি করুন

ডান কানের জন্য ব্যবহৃত কোডটি পুনরাবৃত্তি করুন যাতে পরবর্তী বিভাগটি বাম কান পরীক্ষা করে। একমাত্র পার্থক্য হল কোন আউটপুট চ্যানেল থেকে শব্দ আসবে। এটি করার জন্য, ভেরিয়েবলের জন্য অ্যারের মানগুলির ক্রমটি ফ্লিপ করুন। এটিকে ঐটির মত দেখতে হবে:

আউট = [গুলি; শূন্য (আকার (টি))] ';

এর দ্বারা, ডান চ্যানেল থেকে কোন শব্দ বের হবে না বরং বাম চ্যানেল!

ধাপ 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 Hz এবং আপনার y সীমা -10 থেকে 120 dB নির্ধারণ করুন। Yticks () দিয়ে আপনার উল্লম্ব টিকগুলি পরিবর্তন করতে ভুলবেন না

আপনার x অক্ষ "ফ্রিকোয়েন্সি Hz" এবং আপনার y অক্ষ "Pitch dB" লেবেল করুন।

Ax = gca দিয়ে অক্ষকে জড়ো করে y অক্ষকে উল্টো

তারপর y দিকের সম্পত্তিটি এর সাথে আবদ্ধ করুন: ax. YDir = 'বিপরীত

এখন দ্বিতীয়টির কোডটি প্রায় একই রকম কিন্তু কিংবদন্তি ছাড়া এবং বাম এবং ডান পরীক্ষা থেকে ভেরিয়েবল সহ স্ক্যাটারপ্লট গ্রাফিং।

এই সবের পরে, প্রায় 10 সেকেন্ডের জন্য একটি বিরতি ফাংশন যোগ করুন যাতে ব্যবহারকারী তাদের ফলাফল দেখতে পারেন।

ধাপ 6: আপনি যদি চান তবে একটু ধন্যবাদ বার্তা যোগ করুন

আপনি যদি চান তবে একটু ধন্যবাদ বার্তা যোগ করুন!
আপনি যদি চান তবে একটু ধন্যবাদ বার্তা যোগ করুন!

এটা শুধু মজা করার জন্য যদি আপনি চান কিন্তু ধন্যবাদ এবং বিদায়ের জন্য আরেকটি imread (), imshow () এবং uiwait (msgbox ()) যোগ করুন! তা ছাড়া, clf লাগাতে ভুলবেন না; সব বন্ধ করা; clc; সবকিছু বন্ধ করার জন্য। ভাল কাজ আপনি এটা করেছেন!

প্রস্তাবিত: