المحطة 0 · الدرس 3
أساسيات MATLAB لـ EEGLAB
زر الرجوع في متصفحك يعيدك لنفس المكان الذي كنت فيه، فافتح ما تشاء بلا قلق.
الفكرة باختصار
EEGLAB مكتوب بلغة MATLAB، ويعمل داخلها. كل ضغطة في EEGLAB تتحوّل في الخلفية إلى سطر MATLAB، وستتعلم في المحطة 9 كيف تجمع هذه السطور في سكربتscriptملف أوامر MATLAB ينفّذ خطوات المعالجة بالترتيب. يعالج كل مشاركparticipantالشخص الذي سُجّلت بياناته في التجربة..
والبيانات نفسها تعيش في MATLAB كمتغيّر اسمه EEG. لكي تقرأ منه عدد قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. أو معدل العيّناتsampling rateعدد العيّنات المسجّلة في الثانية لكل قناة.، تحتاج أربع أفكار فقط: المتغيّر، والمصفوفة، والـ structمتغيّر في MATLAB يجمع عدة حقول مسمّاة في مكان واحد.، والمسار.
قبل وبعد
ماذا يعني ما رأيته؟
ترتيب الأجزاء عندك قد يختلف، لأن MATLAB يسمح بنقلها. المهم أن تجد الثلاثة بأسمائها.
ماذا يعني ما رأيته؟
ترتيب الأجزاء عندك قد يختلف، لأن MATLAB يسمح بنقلها. المهم أن تجد الثلاثة بأسمائها.
أسئلتك بعد هذا، كل جواب في قسمه:
لماذا أحتاج هذه الخطوة؟
السبب بالتفصيل، والمصطلحات التي تحتاجها
هذا الدرس ليس دورة MATLAB. إنه أقل ما تحتاجه لتكمل المسار. إذا أردت أكثر، فالتوثيق الرسمي لـ EEGLAB يوصي بدورة MATLAB Onramp المجانية من MathWorks.
لماذا أحتاج هذه الخطوة؟
هذا الدرس ليس دورة MATLAB. إنه أقل ما تحتاجه لتكمل المسار. إذا أردت أكثر، فالتوثيق الرسمي لـ EEGLAB يوصي بدورة MATLAB Onramp المجانية من MathWorks.
كيف أطبّقها في EEGLAB؟
7 خطوة من القوائم
هنا “الواجهةGUIالنوافذ والقوائم التي نستخدمها بالفأرة بدل كتابة الأوامر.” هي نافذة MATLAB نفسها، لا EEGLAB.
- افتح MATLAB، وابحث عن الأجزاء الثلاثة: Command Window و Workspace و Current Folder.
- في الـ Command Window اكتب
x = 5ثم اضغط Enter. يطبع MATLAB الناتج، ويظهر المتغيّرxفي الـ Workspace. - اكتب
y = 7;مع فاصلة منقوطة في آخره. لا يُطبع شيء، لكنyيظهر في الـ Workspace. الفاصلة المنقوطة تمنع الطباعة فقط. - اضغط مرتين على
xفي الـ Workspace. يفتح محرّر المتغيّرات ويعرض قيمته. - افتح سكربتاً جديداً من زر New Script في تبويب Home. انسخ فيه سكربت القسم التالي.
- احفظه باسم
demo_basics.mفي المجلد الظاهر في الـ Current Folder. - شغّله بزر Run في تبويب Editor، أو اكتب اسمه بدون
.mفي الـ Command Window:demo_basics.
تسمية ملف السكربت
اسم ملف السكربت يبدأ بحرف، وفيه حروف إنجليزية وأرقام وشرطة سفلية فقط، بلا مسافات. ولا تسمّه باسم دالة موجودة مثل plot أو eeglab.
تسمية ملف السكربت
اسم ملف السكربت يبدأ بحرف، وفيه حروف إنجليزية وأرقام وشرطة سفلية فقط، بلا مسافات. ولا تسمّه باسم دالة موجودة مثل plot أو eeglab.
كيف أطبّقها في EEGLAB؟
هنا “الواجهة” هي نافذة MATLAB نفسها، لا EEGLAB.
- افتح MATLAB، وابحث عن الأجزاء الثلاثة: Command Window و Workspace و Current Folder.
- في الـ Command Window اكتب
x = 5ثم اضغط Enter. يطبع MATLAB الناتج، ويظهر المتغيّرxفي الـ Workspace. - اكتب
y = 7;مع فاصلة منقوطة في آخره. لا يُطبع شيء، لكنyيظهر في الـ Workspace. الفاصلة المنقوطة تمنع الطباعة فقط. - اضغط مرتين على
xفي الـ Workspace. يفتح محرّر المتغيّرات ويعرض قيمته. - افتح سكربتاً جديداً من زر New Script في تبويب Home. انسخ فيه سكربت القسم التالي.
- احفظه باسم
demo_basics.mفي المجلد الظاهر في الـ Current Folder. - شغّله بزر Run في تبويب Editor، أو اكتب اسمه بدون
.mفي الـ Command Window:demo_basics.
تسمية ملف السكربت
اسم ملف السكربت يبدأ بحرف، وفيه حروف إنجليزية وأرقام وشرطة سفلية فقط، بلا مسافات. ولا تسمّه باسم دالة موجودة مثل plot أو eeglab.
تسمية ملف السكربت
اسم ملف السكربت يبدأ بحرف، وفيه حروف إنجليزية وأرقام وشرطة سفلية فقط، بلا مسافات. ولا تسمّه باسم دالة موجودة مثل plot أو eeglab.
كيف أكتبها بالكود؟
نفس الخطوات في 23 أسطر MATLAB
السكربت يبني تسجيلاً صغيراً بيدك: 3 قنوات لمدة 10 ثوانٍ بمعدل 128 عيّنةsampleقيمة واحدة للإشارة في لحظة زمنية واحدة. في الثانية، بأرقام عشوائية بدل إشارةsignalقيم تتغيّر مع الزمن، مثل الجهد المسجّل في قناة. حقيقية. اسمه demo حتى لا يختلط بالمتغيّر EEG الحقيقي الذي ستقابله في المحطة 1.
% A toy recording: 3 channels, 10 seconds at 128 Hz
demo.srate = 128; % sampling rate (samples per second)
demo.nbchan = 3; % number of channels
demo.pnts = 10 * demo.srate; % samples per channel
demo.labels = {'Fz', 'Cz', 'Pz'}; % channel names (a cell array of text)
demo.data = randn(demo.nbchan, demo.pnts); % random numbers, channels x samples
% Read from the struct
size(demo.data) % rows = channels, columns = samples
demo.srate % one field
demo.labels{2} % text of the second channel name
% Indexing: channel 2, samples 1 to 5
firstSamples = demo.data(2, 1:5)
% Time of each sample in seconds (the first sample is at time 0)
t = (0:demo.pnts-1) / demo.srate;
t(end)
% Plot one channel
figure;
plot(t, demo.data(2, :));
xlabel('Time (s)'); ylabel('Amplitude');
title(['Channel ' demo.labels{2}]);
% Where MATLAB finds things
whos demo % size and type of a variable
which plot % location of a function on the pathماذا يفعل كل جزء:
- struct: المتغيّر
demoصندوق فيه حقلfield (in a struct)جزء مسمّى داخل struct يحمل قيمة، مثل EEG.srate.، لكل حقل اسم. تصل إلى الحقل بنقطة:demo.srate. المتغيّرEEGفي EEGLAB struct بنفس الفكرة لكن بحقول أكثر. - المصفوفة:
demo.dataجدول أرقام. كل صف قناة، وكل عمود عيّنة زمنية. وهذا نفس ترتيبEEG.dataفي EEGLAB: القنوات أولاً ثم العيّنات. - الفهرسة:
demo.data(2, 1:5)تعني: الصف 2، والأعمدة من 1 إلى 5. والنقطتان وحدهما:تعني “كل الأعمدة”. الترقيم في MATLAB يبدأ من 1 لا من 0. - الزمن: أول عيّنة عند الزمن صفر، لذلك نقسم من 0 إلى عدد العيّنات ناقص 1 على معدل العيّنات. آخر عيّنة عند 9.9922 ثانية لا 10.
- المسار (path): MATLAB يجد الدوال والسكربتات في المجلد الحالي وفي قائمة مجلدات اسمها المسار. الأمر
whichيخبرك من أين سيأتي أي اسم. والأمرaddpathيضيف مجلداً إلى المسار في هذه الجلسة فقط. ستستخدمه في درس التثبيت في المحطة 1 لتضيف مجلد EEGLAB وتحفظه.
كيف أكتبها بالكود؟
السكربت يبني تسجيلاً صغيراً بيدك: 3 قنوات لمدة 10 ثوانٍ بمعدل 128 عيّنة في الثانية، بأرقام عشوائية بدل إشارة حقيقية. اسمه demo حتى لا يختلط بالمتغيّر EEG الحقيقي الذي ستقابله في المحطة 1.
% A toy recording: 3 channels, 10 seconds at 128 Hz
demo.srate = 128; % sampling rate (samples per second)
demo.nbchan = 3; % number of channels
demo.pnts = 10 * demo.srate; % samples per channel
demo.labels = {'Fz', 'Cz', 'Pz'}; % channel names (a cell array of text)
demo.data = randn(demo.nbchan, demo.pnts); % random numbers, channels x samples
% Read from the struct
size(demo.data) % rows = channels, columns = samples
demo.srate % one field
demo.labels{2} % text of the second channel name
% Indexing: channel 2, samples 1 to 5
firstSamples = demo.data(2, 1:5)
% Time of each sample in seconds (the first sample is at time 0)
t = (0:demo.pnts-1) / demo.srate;
t(end)
% Plot one channel
figure;
plot(t, demo.data(2, :));
xlabel('Time (s)'); ylabel('Amplitude');
title(['Channel ' demo.labels{2}]);
% Where MATLAB finds things
whos demo % size and type of a variable
which plot % location of a function on the pathماذا يفعل كل جزء:
- struct: المتغيّر
demoصندوق فيه حقول، لكل حقل اسم. تصل إلى الحقل بنقطة:demo.srate. المتغيّرEEGفي EEGLAB struct بنفس الفكرة لكن بحقول أكثر. - المصفوفة:
demo.dataجدول أرقام. كل صف قناة، وكل عمود عيّنة زمنية. وهذا نفس ترتيبEEG.dataفي EEGLAB: القنوات أولاً ثم العيّنات. - الفهرسة:
demo.data(2, 1:5)تعني: الصف 2، والأعمدة من 1 إلى 5. والنقطتان وحدهما:تعني “كل الأعمدة”. الترقيم في MATLAB يبدأ من 1 لا من 0. - الزمن: أول عيّنة عند الزمن صفر، لذلك نقسم من 0 إلى عدد العيّنات ناقص 1 على معدل العيّنات. آخر عيّنة عند 9.9922 ثانية لا 10.
- المسار (path): MATLAB يجد الدوال والسكربتات في المجلد الحالي وفي قائمة مجلدات اسمها المسار. الأمر
whichيخبرك من أين سيأتي أي اسم. والأمرaddpathيضيف مجلداً إلى المسار في هذه الجلسة فقط. ستستخدمه في درس التثبيت في المحطة 1 لتضيف مجلد EEGLAB وتحفظه.
أي قيمة أختار؟
القيم المناسبة حسب هدف تحليلك
لا قيمة تختارها هنا، لكن هناك رموز متشابهة يختلف معناها. هذا الجدول يكفيك لقراءة أي سطر في دروس EEGLAB.
| تكتب | المعنى | مثال من الدروس |
|---|---|---|
a = 5 | أنشئ متغيّراً واطبع قيمته | x = 5 |
a = 5; | نفس الشيء بلا طباعة | EEG = pop_eegfiltnew(EEG, 'locutoff', 0.1); |
s.name | حقل داخل struct | EEG.srate |
m(2, 1:5) | عناصر من مصفوفة بالأقواس العادية | EEG.data(1, 1:10) |
c{2} | محتوى خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها. من cell array بالأقواس المعقوفة | demo.labels{2} |
'text' | نص بين علامتي تنصيص مفردة | 'locutoff' |
% | كل ما بعده في السطر تعليق لا يُنفّذ | % high-pass |
help name | شرح دالة في الـ Command Window | help pop_eegfiltnew |
أي قيمة أختار؟
لا قيمة تختارها هنا، لكن هناك رموز متشابهة يختلف معناها. هذا الجدول يكفيك لقراءة أي سطر في دروس EEGLAB.
| تكتب | المعنى | مثال من الدروس |
|---|---|---|
a = 5 | أنشئ متغيّراً واطبع قيمته | x = 5 |
a = 5; | نفس الشيء بلا طباعة | EEG = pop_eegfiltnew(EEG, 'locutoff', 0.1); |
s.name | حقل داخل struct | EEG.srate |
m(2, 1:5) | عناصر من مصفوفة بالأقواس العادية | EEG.data(1, 1:10) |
c{2} | محتوى خانة من cell array بالأقواس المعقوفة | demo.labels{2} |
'text' | نص بين علامتي تنصيص مفردة | 'locutoff' |
% | كل ما بعده في السطر تعليق لا يُنفّذ | % high-pass |
help name | شرح دالة في الـ Command Window | help pop_eegfiltnew |
كيف أتأكد أنها نجحت؟
5 فحوص سريعة
size(demo.data)يطبع3ثم1280.demo.srateيطبع128، وdemo.labels{2}يطبع'Cz'.t(end)يطبع9.9922.- ظهرت نافذة رسم فيها خط متذبذب حول الصفر لمدة 10 ثوانٍ، وعنوانها
Channel Cz. which plotيطبع مساراً داخل مجلد تثبيت MATLAB، لا داخل مجلدك.
كيف أتأكد أنها نجحت؟
size(demo.data)يطبع3ثم1280.demo.srateيطبع128، وdemo.labels{2}يطبع'Cz'.t(end)يطبع9.9922.- ظهرت نافذة رسم فيها خط متذبذب حول الصفر لمدة 10 ثوانٍ، وعنوانها
Channel Cz. which plotيطبع مساراً داخل مجلد تثبيت MATLAB، لا داخل مجلدك.
ما الأخطاء التي يقع فيها كثيرون؟
5 أخطاء، وكيف تتجنّبها
- الترقيم من الصفر. أول عنصر في MATLAB رقمه 1. كتابة
demo.data(0, 1)تعطي خطأ. - نسيان الفاصلة المنقوطة مع مصفوفة كبيرة. سطر مثل
x = EEG.dataبلا فاصلة منقوطة يطبع ملايين الأرقام ويجمّد الـ Command Window. إذا حدثeventعلامة في التسجيل تحدد لحظة شيء مهم، مثل ظهور مثير. هذا اضغط Ctrl+C لإيقافه. - الخلط بين الأحرف الكبيرة والصغيرة.
EEGوeegمتغيّران مختلفان. EEGLAB يستخدمEEGبأحرف كبيرة دائماً. - الأقواس العادية مع cell array.
demo.labels(2)تعطي خانة فيها النص، لا النص نفسه. للنص استخدمdemo.labels{2}. - ملف سكربت باسم دالة موجودة. إذا سمّيت سكربتك
plot.mأوeeglab.m، فسيشغّل MATLAB ملفك بدل الدالة الأصلية. تحقّق بالأمرwhichإذا تصرّفت دالة بغرابة.
ما الأخطاء التي يقع فيها كثيرون؟
- الترقيم من الصفر. أول عنصر في MATLAB رقمه 1. كتابة
demo.data(0, 1)تعطي خطأ. - نسيان الفاصلة المنقوطة مع مصفوفة كبيرة. سطر مثل
x = EEG.dataبلا فاصلة منقوطة يطبع ملايين الأرقام ويجمّد الـ Command Window. إذا حدث هذا اضغط Ctrl+C لإيقافه. - الخلط بين الأحرف الكبيرة والصغيرة.
EEGوeegمتغيّران مختلفان. EEGLAB يستخدمEEGبأحرف كبيرة دائماً. - الأقواس العادية مع cell array.
demo.labels(2)تعطي خانة فيها النص، لا النص نفسه. للنص استخدمdemo.labels{2}. - ملف سكربت باسم دالة موجودة. إذا سمّيت سكربتك
plot.mأوeeglab.m، فسيشغّل MATLAB ملفك بدل الدالة الأصلية. تحقّق بالأمرwhichإذا تصرّفت دالة بغرابة.
متصفحك لا يسمح بحفظ التقدّم. كل الدروس متاحة، لكن علامات الإكمال لن تُحفظ.
تم. حُفظ تقدّمك في هذا المتصفح.تراجعأين أقرأ أكثر؟
4 مراجع: التوثيق الرسمي أولاً
- EEGLAB TutorialتوثيقReference Topics > MATLAB tutorial
- MATLAB Onramp (MathWorks)MATLAB Onramp
- MATLAB Documentationstruct
- MATLAB DocumentationWhat Is the MATLAB Search Path?
مكتوب لـ EEGLAB 2026.1 · 2026-10-27
للتوسّع
- EEGLAB Tutorial: https://eeglab.org/tutorials/misc/tutorial_matlab.html (Reference Topics > MATLAB tutorial)
- MATLAB Onramp (MathWorks): https://matlabacademy.mathworks.com/ (MATLAB Onramp)
- MATLAB Documentation: https://www.mathworks.com/help/matlab/ref/struct.html (struct)
- MATLAB Documentation: https://www.mathworks.com/help/matlab/matlab_env/what-is-the-matlab-search-path.html (What Is the MATLAB Search Path?)
تحتاج مساعدة؟
اسأل، أو شاركنا رأيك، أو بلّغ عن خطأ
- بلّغ عن خطأ علمي · يحتاج حساباً على GitHub. لا تملك حساباً؟ استخدم "شاركنا رأيك".