المحطة 0 · الدرس 3

أساسيات MATLAB لـ EEGLAB

أساسي15 دقيقةقبل هذا الدرس: لا يحتاج درساً سابقاً.اطبع البطاقة

الفكرة باختصار

EEGLAB مكتوب بلغة MATLAB، ويعمل داخلها. كل ضغطة في قائمةmenuمجموعة أوامر تظهر عند الضغط على اسمها في أعلى النافذة. EEGLAB تتحوّل في الخلفية إلى سطر MATLAB، وستتعلم في المحطة 9 كيف تجمع هذه السطور في سكربتscriptملف أوامر MATLAB ينفّذ خطوات المعالجة بالترتيب. يعالج كل مشاركparticipantالشخص الذي سُجّلت بياناته في التجربة..

والبيانات نفسها تعيش في MATLAB كمتغيّر اسمه EEG. لكي تقرأ منه عدد قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. أو معدل العيّناتsampling rateعدد العيّنات المسجّلة في الثانية لكل قناة.، تحتاج أربع أفكار فقط: المتغيّر، والمصفوفة، والـ structمتغيّر في MATLAB يجمع عدة حقول مسمّاة في مكان واحد.، والمسار.

قبل وبعد

رسم تخطيطي لنافذة MATLAB: Current Folder على اليسار فيه ملفات المجلد الحالي، و Command Window في المنتصف وفيه السطر demo.srate = 128 ونتيجته، و Workspace على اليمين وفيه المتغيّر demo من نوع 1x1 struct.
ماذا يعني ما رأيته؟

ترتيب الأجزاء عندك قد يختلف، لأن MATLAB يسمح بنقلها. المهم أن تجد الثلاثة بأسمائها.

أسئلتك بعد هذا، كل جواب في قسمه:

لماذا أحتاج هذه الخطوة؟

السبب بالتفصيل، والمصطلحات التي تحتاجها

هذا الدرس ليس دورة MATLAB. إنه أقل ما تحتاجه لتكمل المسار. إذا أردت أكثر، فالتوثيق الرسمي لـ EEGLAB يوصي بدورة MATLAB Onramp المجانية من MathWorks.

كيف أطبّقها في EEGLAB؟

7 خطوة من القوائم

هنا “الواجهةGUIالنوافذ والقوائم التي نستخدمها بالفأرة بدل كتابة الأوامر.” هي نافذة MATLAB نفسها، لا EEGLAB.

  1. افتح MATLAB، وابحث عن الأجزاء الثلاثة: Command Window و Workspace و Current Folder.
  2. في الـ Command Window اكتب x = 5 ثم اضغط Enter. يطبع MATLAB الناتج، ويظهر المتغيّر x في الـ Workspace.
  3. اكتب y = 7; مع فاصلة منقوطة في آخره. لا يُطبع شيء، لكن y يظهر في الـ Workspace. الفاصلة المنقوطة تمنع الطباعة فقط.
  4. اضغط مرتين على x في الـ Workspace. يفتح محرّر المتغيّرات ويعرض قيمته.
  5. افتح سكربتاً جديداً من زر New Script في تبويب Home. انسخ فيه سكربت القسم التالي.
  6. احفظه باسم demo_basics.m في المجلد الظاهر في الـ Current Folder.
  7. شغّله بزر Run في تبويب Editor، أو اكتب اسمه بدون .m في الـ Command Window: demo_basics.
تسمية ملف السكربت

اسم ملف السكربت يبدأ بحرف، وفيه حروف إنجليزية وأرقام وشرطة سفلية فقط، بلا مسافات. ولا تسمّه باسم دالة موجودة مثل plot أو eeglab.

كيف أكتبها بالكود؟

نفس الخطوات في 23 أسطر MATLAB

السكربت يبني تسجيلاً صغيراً بيدك: 3 قنوات لمدة 10 ثوانٍ بمعدل 128 عيّنةsampleقيمة واحدة للإشارة في لحظة زمنية واحدة. في الثانية، بأرقام عشوائية بدل إشارةsignalقيم تتغيّر مع الزمن، مثل الجهد المسجّل في قناة. حقيقية. اسمه demo حتى لا يختلط بالمتغيّر EEG الحقيقي الذي ستقابله في المحطة 1.

MATLAB
% 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 وتحفظه.

أي قيمة أختار؟

القيم المناسبة حسب هدف تحليلك

لا قيمة تختارها هنا، لكن هناك رموز متشابهة يختلف معناها. هذا الجدول يكفيك لقراءة أي سطر في دروس EEGLAB.

تكتبالمعنىمثال من الدروس
a = 5أنشئ متغيّراً واطبع قيمتهx = 5
a = 5;نفس الشيء بلا طباعةEEG = pop_eegfiltnew(EEG, 'locutoff', 0.1);
s.nameحقل داخل structEEG.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 Windowhelp 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، لا داخل مجلدك.

ما الأخطاء التي يقع فيها كثيرون؟

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 إذا تصرّفت دالة بغرابة.

أين أقرأ أكثر؟

4 مراجع: التوثيق الرسمي أولاً

مكتوب لـ EEGLAB 2026.1 · 2026-10-27

تحتاج مساعدة؟

اسأل، أو شاركنا رأيك، أو بلّغ عن خطأ