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

إعادة المرجع (re-referencing)

أساسي15 دقيقةقبل هذا الدرس: الاستيفاء (interpolation)اطبع البطاقة
تبدأ من: eeglab_data.set (D1) · ما طُبّق عليه قبل هذا الدرس: فلترة high-pass و low-pass، إزالة ضوضاء الكهرباء (50 أو 60 هرتز)، القنوات السيئة، الاستيفاء (interpolation)تنزيل البيانات (يفتح في نافذة جديدة)
سكربت الوصول لهذه الحالة
MATLAB
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;
eeglabRoot = fileparts(which('eeglab'));
EEG = pop_loadset('eeglab_data.set', fullfile(eeglabRoot, 'sample_data'));
fullLocs = EEG.chanlocs;

% Main dataset: high-pass at 0.1 Hz, then 60 Hz line-noise removal
EEG = pop_eegfiltnew(EEG, 'locutoff', 0.1);
EEG = pop_eegfiltnew(EEG, 'locutoff', 58, 'hicutoff', 62, 'revfilt', 1);

% Bad channels you removed earlier, e.g. {'T7'}; leave empty if none
badChans = {};
if ~isempty(badChans)
    EEG = pop_select(EEG, 'rmchannel', badChans);
    EEG = pop_interp(EEG, fullLocs, 'spherical');
end
EEG.filename = ''; EEG.filepath = ''; EEG.datfile = ''; EEG.saved = 'no';
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, 'setname', 'D1 interp', 'gui', 'off');
eeglab redraw;

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

الجهد الكهربائي لا يُقاس في نقطة واحدة. كل قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. تقيس الفرق بين قطبها قطبelectrodeالقطعة المعدنية التي توضع على الرأس لالتقاط الإشارة. آخر اسمه المرجعreferenceالنقطة التي يُقاس جهد كل قناة بالنسبة لها. (reference). لذلك يحدد المرجع شكل كل القنوات.

إذا غيّرت المرجع، تتغيّر كل القنوات معاً. القناة القريبة من المرجع القديم تبدو صغيرة، وبعد تغييره قد تكبر كثيراً. لا توجد قناة “حقيقية” بلا مرجع.

إعادة المرجعre-referencingتغيير المرجع بعد التسجيل بحساب الجهد بالنسبة لمرجع جديد. (re-referencing) تحسب البيانات كأنها سُجّلت بمرجع آخر. أشهر خيارين:

قبل وبعد

المحاكاة تحتاج JavaScript. هذه صورة ثابتة للفكرة نفسها.

هذه محاكاة. إعداد المسار في هذا الدرس المرجع المتوسط

ماذا يعني ما رأيته؟
اعرض
خمس ثوانٍ من القنوات FPz و Cz و Pz و Oz و EOG1 بالمرجع الأصلي (الخشاء)، بمقياس 180 ميكروفولت.
قبل: المرجع الأصليالبيانات: عيّنة EEGLAB الرسمية (eeglab_data.set)
القنوات والثواني نفسها بعد المرجع المتوسط وبنفس المقياس: تغيّر شكل قنوات فروة الرأس، و EOG1 لم تتغير لأنها مستثناة.
بعد: المرجع المتوسطالبيانات: عيّنة EEGLAB الرسمية (eeglab_data.set)

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

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

السبب بالتفصيل، والمصطلحات التي تحتاجها
  • المرجع المتوسطaverage referenceمرجع يساوي متوسط كل قنوات الرأس. (average reference): متوسط كل قنوات الرأس في كل لحظة. التوثيق الرسمي ينصح به لتحليل المصادر، وهو مرجع مسارنا قبل ICAطريقة تفصل الإشارة المسجّلة إلى مصادر مستقلة، بعضها دماغي وبعضها آرتفاكت..
  • متوسط الماستويدlinked mastoidsمرجع يساوي متوسط قطبي العظمتين خلف الأذنين. (linked mastoids): متوسط قطبين خلف الأذنين. شائع في دراسات ERPمتوسط استجابة الدماغ لحدث معيّن عبر محاولات كثيرة.، مثل كتاب Luck.
عن D1

سُجّلت بمرجع عند الماستويد، كما يقول التوثيق الرسمي، وقناة المرجع ليست في البيانات. لذلك لا تضيفها، ولا تستطيع تجربة متوسط الماستويد على D1. جرّبه في المحاكاة أدناه.

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

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

ابدأ والنسخة الرئيسية بعد الاستيفاءinterpolationتقدير إشارة قناة محذوفة من القنوات المحيطة بها. مفتوحة كما في “نقطة البداية”. في D1 هي D1 badch من درس القنوات السيئة، لأنه لم يكن فيها شيء لتستوفيه.

  1. تأكد أولاً أن عدد القنوات كامل: Channels per frame يساوي 32 في D1.
  2. افتح Tools ثم Re-reference the data. تظهر نافذة بعنوان pop_reref - average reference or re-reference data.
  3. السطر الأول Current data reference state is: يعرض المرجع الحالي. في D1 قد يظهر unknown، لأن الملف لا يحفظ اسم المرجع لكل قناة.
  4. أبقِ Compute average reference مفعّلاً، فهو الخيار الافتراضي.
  5. اترك Huber average ref. with threshold غير مفعّل. التوثيق الرسمي يقول إنه لا يُستخدم قبل ICA.
  6. بجانب Exclude channel indices (EMG, EOG) اضغط … واختر EOG1 و EOG2. تمتلئ خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها. باسميهما.
  7. اترك Add old ref. channel back to the data فارغاً، لأن قناة الماستويد ليست في D1.
  8. اضغط OK. تطبع نافذة الأوامر Re-referencing data.
  9. سمِّ داتاستdatasetملف بيانات EEG واحد محمّل في EEGLAB مع معلوماته. الجديدة D1 main، واترك Overwrite it in memory (set=yes; unset=create a new dataset) غير مفعّل.
  10. احفظها من File ثم Save current dataset as. هذه “النسخة الرئيسية” التي تبدأ منها دروس ICA.
  11. قارن الداتاستين من Plot ثم Channel data (scroll): كل قنوات الرأس تغيّرت، و EOG1 و EOG2 بقيتا كما هما.

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

نفس الخطوات في 18 أسطر MATLAB
MATLAB
% Keep a copy to compare before and after
EEG_before = EEG;

% Average reference, EOG channels excluded
eogIdx = find(ismember({EEG.chanlocs.labels}, {'EOG1', 'EOG2'}));
EEG = pop_reref(EEG, [], 'exclude', eogIdx);
EEG.setname = 'D1 main';

% Check: scalp channels now sum to (almost) zero at every time point
scalpIdx = setdiff(1:EEG.nbchan, eogIdx);
fprintf('Reference: %s\n', EEG.ref);
fprintf('Largest sum over scalp channels: %g uV\n', max(abs(sum(EEG.data(scalpIdx, :), 1))));

% Channel Oz over 5 seconds, before and after
oz = find(strcmp({EEG.chanlocs.labels}, 'Oz'));
t = 1:5*EEG.srate;
figure;
plot(t / EEG.srate, EEG_before.data(oz, t), t / EEG.srate, EEG.data(oz, t));
legend('Original reference (mastoid)', 'Average reference');
xlabel('Time (s)'); ylabel('Amplitude (uV)');

EEG = pop_saveset(EEG, 'filename', 'D1_main.set', 'filepath', pwd);

هذا نفس سطر pop_reref في سكربتscriptملف أوامر MATLAB ينفّذ خطوات المعالجة بالترتيب. نقطة البداية لدروس ICA. الرقم الذي يطبعه الفحص صغير جداً وليس صفراً تماماً، لأن البيانات مخزّنة بدقة single.

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

القيم المناسبة حسب هدف تحليلك
الإعدادالقيمةلماذا
المرجع لمسار ICA وتحليل المصادرالمرجع المتوسطالتوثيق الرسمي يوصي به لتحليل المصادر، و ICA في مسارنا يعمل عليه.
المرجع لمقارنة نتائجك بدراسات ERP سابقةنفس مرجع تلك الدراسات، غالباً متوسط الماستويدالمرجع يغيّر شكل الـ ERP وسعته، فالمقارنة تحتاج نفس المرجع.
القنوات المستبعدةقنوات EOG و ECG و EMGليست قنوات رأس، فلا تدخل في متوسط الرأس.
إضافة قناة المرجع القديمفقط إذا كانت موقعها معرّفاً في محرر القنواتفي D1 لا تُضاف، حسب التوثيق الرسمي.
Huberلا قبل ICAالتوثيق الرسمي: يكسر شرط الخطية الذي يحتاجه ICA، ومكانه بعد ICA.

كيف أتأكد أنها نجحت؟

4 فحوص سريعة
  1. النافذة الرئيسية: السطر Reference يعرض average، و Channels per frame ما زال 32.
  2. الفحص في السكربت: EEG.ref يساوي average، ومجموع قنوات الرأس رقم صغير جداً قريب من الصفر.
  3. قنوات العين لم تتغيّر: في عرض scroll تبدو EOG1 و EOG2 كما كانتا قبل إعادة المرجع.
  4. قنوات الرأس تغيّرت: Oz مثلاً تبدو مختلفة بوضوح عن شكلها بمرجع الماستويد.

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

5 أخطاء، وكيف تتجنّبها
  • إدخال قنوات EOG أو ECG في المرجع المتوسط. هذه قنوات غير دماغية، وإشارتها الكبيرة تدخل في كل قناة عبر المتوسط. استبعدها في خانة Exclude channel indices (EMG, EOG).
  • نسيان أن المرجع المتوسط ينقص رتبة البيانات بواحد. بعد المرجع المتوسط تصبح قنوات الرأس مجموعها صفر، فأي قناة منها تساوي سالب مجموع الباقي. لذلك في D1 تصبح رتبة البيانات 31 لا 32، و ICA يعطي 31 مكوّناً.
  • إعادة المرجع قبل الاستيفاء. متوسط قنوات ناقصة يميل نحو الجهة التي فيها قنوات أكثر. استوفِ أولاً.
  • تغيير المرجع بعد ICA. الأوزان مرتبطة بالمرجع الذي حُسب عليه ICA. أعد المرجع قبل ICA واتركه بعده. EEGLAB يحذّرك إذا غيّرته.
  • إضافة قناة مرجع غير موجودة. في D1 قناة الماستويد ليست في البيانات. لا تملأ Add old ref. channel back to the data إلا إذا عرّفتها في محرر القنوات.

كيف أكتبها في ورقتي؟

قالب Methods: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته

قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.

Data were re-referenced to the average of all scalp channels (pop_reref, EEGLAB 2026.1); EOG channels were excluded from the reference.

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

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

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

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

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