المحطة 6 · الدرس 1
ERP والمتوسطات
eeglab_data.set (D1) · ما طُبّق عليه قبل هذا الدرس: فلترة high-pass و low-pass، إزالة ضوضاء الكهرباء (50 أو 60 هرتز)، القنوات السيئة، الاستيفاء (interpolation)، إعادة المرجع (re-referencing)، تشغيل ICA، فلتر 1 هرتز قبل ICA ونسخ الأوزان، ICLabel وحذف المكوّنات، استخراج epochs، تصحيح baseline، رفض epochs السيئةتنزيل البيانات (يفتح في نافذة جديدة)سكربت الوصول لهذه الحالة
% Shortcut: if you saved D1_epochs_clean.set in the epoch rejection lesson,
% keep the first line and the last three lines, and replace every line between them with:
% EEG = pop_loadset('D1_epochs_clean.set', pwd);
[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
% Average reference, EOG channels excluded
eogIdx = find(ismember({EEG.chanlocs.labels}, {'EOG1', 'EOG2'}));
EEG = pop_reref(EEG, [], 'exclude', eogIdx);
% ICA on a 1-Hz copy, then copy the weights back
EEG_ica = pop_eegfiltnew(EEG, 'locutoff', 1);
EEG_ica = pop_runica(EEG_ica, 'icatype', 'runica', 'extended', 1);
EEG.icaweights = EEG_ica.icaweights;
EEG.icasphere = EEG_ica.icasphere;
EEG.icachansind = EEG_ica.icachansind;
EEG.icawinv = [];
EEG.icaact = [];
EEG = eeg_checkset(EEG);
% Remove components ICLabel rates above 90% Eye or Muscle
EEG = pop_iclabel(EEG, 'default');
EEG = pop_icflag(EEG, [NaN NaN; 0.9 1; 0.9 1; NaN NaN; NaN NaN; NaN NaN; NaN NaN]);
artifactComps = find(EEG.reject.gcompreject);
if ~isempty(artifactComps)
EEG = pop_subcomp(EEG, artifactComps, 0);
end
% Low-pass at 30 Hz
EEG = pop_eegfiltnew(EEG, 'hicutoff', 30);
EEG.setname = 'D1 main clean lp30';
% Epochs around 'square', baseline -200 to 0 ms
EEG = pop_epoch(EEG, {'square'}, [-1 2], 'newname', 'D1 epochs', 'epochinfo', 'yes');
EEG = pop_rmbase(EEG, [-200 0]);
% Reject epochs beyond +/-100 uV
EEG = pop_eegthresh(EEG, 1, 1:EEG.nbchan, -100, 100, EEG.xmin, EEG.xmax, 0, 0);
if any(EEG.reject.rejthresh)
EEG = pop_rejepoch(EEG, EEG.reject.rejthresh, 0);
end
EEG.setname = 'D1 epochs clean';
EEG = eeg_checkset(EEG);
EEG.filename = ''; EEG.filepath = ''; EEG.datfile = ''; EEG.saved = 'no';
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, 'setname', 'D1 epochs clean', 'gui', 'off');
eeglab redraw;زر الرجوع في متصفحك يعيدك لنفس المكان الذي كنت فيه، فافتح ما تشاء بلا قلق.
الفكرة باختصار
في كل epochمقطع زمني قصير مقتطع حول حدث.، استجابة الدماغ للمربع صغيرة، بضعة ميكروفولت، وفوقها نشاط آخر أكبر منها لا علاقة له بالمثير. لذلك لا تكاد ترى الاستجابة في محاولةtrialتكرار واحد للمهمة في التجربة، غالباً حول مثير واحد. الواحدة.
الفكرة: الاستجابة للمثير تتكرر بنفس الشكل وفي نفس التوقيتlatency (event)موضع الحدث في التسجيل، ويُخزَّن في EEGLAB بالعيّنات. في كل محاولة، أما النشاط الآخر فيختلف عشوائياً. إذا حسبت متوسط كل الـ epochs نقطة بنقطة، تبقى الاستجابة، ويلغي النشاط العشوائي بعضه بعضاً.
قبل وبعد

أسئلتك بعد هذا، كل جواب في قسمه:
لماذا أحتاج هذه الخطوة؟
السبب بالتفصيل، والمصطلحات التي تحتاجها
الموجة الناتجة هي ERPمتوسط استجابة الدماغ لحدث معيّن عبر محاولات كثيرة. (ERP). وهي أساس كل ما بعدها: القياس، والمقارنة بين شرطconditionحالة تجريبية نقارن بينها وبين غيرها، مثل "مألوف" و"غير مألوف".، والإحصاء.
لماذا أحتاج هذه الخطوة؟
الموجة الناتجة هي الجهد المرتبط بحدث (ERP). وهي أساس كل ما بعدها: القياس، والمقارنة بين الشروط، والإحصاء.
كيف أطبّقها في EEGLAB؟
4 خطوة من القوائم
ابدأ داتاستdatasetملف بيانات EEG واحد محمّل في EEGLAB مع معلوماته. D1 epochs clean مفتوحة، كما في “نقطة البداية”.
EEGLAB لا يحتوي منفصلة اسمها “احسب المتوسط”. المتوسط يُحسب داخل قوائم رسم الـ ERP، أو بسطر واحد في سكربتscriptملف أوامر MATLAB ينفّذ خطوات المعالجة بالترتيب.. هنا نعرضه مرة واحدة للنظرة الأولى، وخيارات الرسم بالتفصيل في المحطة 7.
- افتح Plot ثم Channel ERPs ثم In scalp/rect. array.
- تظهر نافذة Topographic ERP plot - pop_plottopo(). اترك Channels to plot على
1:32، واترك Plot single trials وPlot in rect. array غير مفعّلين، واضغط Ok. - يظهر متوسط كل قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB. في مكانها على الرأس. اضغط على موجة Pz لتكبيرها في نافذة مستقلة.
- ابحث في الموجة المكبّرة عن شيئين، بعد الخط العمودي عند الصفر:
- موجة سالبة صغيرة حوالي 200 ميلي ثانية، أوضح في القنوات الخلفية مثل POz وOz.
- موجة موجبة كبيرة قمتها حوالي 400 ميلي ثانية، أكبر ما تكون في القنوات الوسطى والجدارية مثل Cz وPz.
اتجاه المحور
في هذه النافذة، الموجب لأعلى (الخيار 'ydir', 1 في آخر خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها.). بعض الكتب والبرامج ترسم السالب لأعلى، فانظر دائماً لعلامات المحور قبل أن تقول “قمة موجبة”.
اتجاه المحور
في هذه النافذة، الموجب لأعلى (الخيار 'ydir', 1 في آخر خانةfield (in a dialog)مكان في نافذة نكتب فيه قيمة أو نختارها.). بعض الكتب والبرامج ترسم السالب لأعلى، فانظر دائماً لعلامات المحور قبل أن تقول “قمة موجبة”.
كيف أطبّقها في EEGLAB؟
ابدأ والداتاست D1 epochs clean مفتوحة، كما في “نقطة البداية”.
EEGLAB لا يحتوي قائمة منفصلة اسمها “احسب المتوسط”. المتوسط يُحسب داخل قوائم رسم الـ ERP، أو بسطر واحد في السكربت. هنا نعرضه مرة واحدة للنظرة الأولى، وخيارات الرسم بالتفصيل في المحطة 7.
- افتح Plot ثم Channel ERPs ثم In scalp/rect. array.
- تظهر نافذة Topographic ERP plot - pop_plottopo(). اترك Channels to plot على
1:32، واترك Plot single trials وPlot in rect. array غير مفعّلين، واضغط Ok. - يظهر متوسط كل قناة في مكانها على الرأس. اضغط على موجة Pz لتكبيرها في نافذة مستقلة.
- ابحث في الموجة المكبّرة عن شيئين، بعد الخط العمودي عند الصفر:
- موجة سالبة صغيرة حوالي 200 ميلي ثانية، أوضح في القنوات الخلفية مثل POz وOz.
- موجة موجبة كبيرة قمتها حوالي 400 ميلي ثانية، أكبر ما تكون في القنوات الوسطى والجدارية مثل Cz وPz.
اتجاه المحور
في هذه النافذة، الموجب لأعلى (الخيار 'ydir', 1 في آخر خانة). بعض الكتب والبرامج ترسم السالب لأعلى، فانظر دائماً لعلامات المحور قبل أن تقول “قمة موجبة”.
اتجاه المحور
في هذه النافذة، الموجب لأعلى (الخيار 'ydir', 1 في آخر خانة). بعض الكتب والبرامج ترسم السالب لأعلى، فانظر دائماً لعلامات المحور قبل أن تقول “قمة موجبة”.
كيف أكتبها بالكود؟
نفس الخطوات في 19 أسطر MATLAB
% The ERP is the mean over epochs: channels x time points
% (the same line pop_plottopo computes in the GUI step)
erp = mean(EEG.data, 3);
fprintf('Averaged %d epochs\n', EEG.trials);
% Plot the ERP at Pz, positive up
pz = find(strcmp({EEG.chanlocs.labels}, 'Pz'));
figure;
plot(EEG.times, erp(pz, :), 'k', 'LineWidth', 1.5);
xlim([-200 800]); grid on;
xline(0, '--'); yline(0);
xlabel('Time (ms)'); ylabel('Amplitude (\muV)');
title(sprintf('ERP at Pz, %d epochs', EEG.trials));
% Approximate latency of the largest positive peak between 250 and 600 ms
win = EEG.times >= 250 & EEG.times <= 600;
winTimes = EEG.times(win);
[peakAmp, iPeak] = max(erp(pz, win));
fprintf('Positive peak at Pz: %.1f uV at %.0f ms\n', peakAmp, winTimes(iPeak));
% Quick look at all channels, same as the GUI step
figure; pop_plottopo(EEG, 1:EEG.nbchan, EEG.setname, 0, 'ydir', 1);كيف أكتبها بالكود؟
% The ERP is the mean over epochs: channels x time points
% (the same line pop_plottopo computes in the GUI step)
erp = mean(EEG.data, 3);
fprintf('Averaged %d epochs\n', EEG.trials);
% Plot the ERP at Pz, positive up
pz = find(strcmp({EEG.chanlocs.labels}, 'Pz'));
figure;
plot(EEG.times, erp(pz, :), 'k', 'LineWidth', 1.5);
xlim([-200 800]); grid on;
xline(0, '--'); yline(0);
xlabel('Time (ms)'); ylabel('Amplitude (\muV)');
title(sprintf('ERP at Pz, %d epochs', EEG.trials));
% Approximate latency of the largest positive peak between 250 and 600 ms
win = EEG.times >= 250 & EEG.times <= 600;
winTimes = EEG.times(win);
[peakAmp, iPeak] = max(erp(pz, win));
fprintf('Positive peak at Pz: %.1f uV at %.0f ms\n', peakAmp, winTimes(iPeak));
% Quick look at all channels, same as the GUI step
figure; pop_plottopo(EEG, 1:EEG.nbchan, EEG.setname, 0, 'ydir', 1);أي قيمة أختار؟
القيم المناسبة حسب هدف تحليلك
| الإعداد | القيمة | لماذا |
|---|---|---|
| ما يدخل المتوسط | الـ epochs النظيفة من شرط واحد فقط | المتوسط يخلط كل ما تعطيه. إذا كان عندك شرطان، احسب متوسطاً لكل شرط وحده. |
| عدد المحاولات | أكثر ما تستطيع بعد رفضrejectionاستبعاد epochs أو بيانات لا تصلح للتحليل.، ونفس العدد تقريباً لكل شرط | ضوضاءnoiseأي جزء من التسجيل لا يحمل المعلومة التي نقيسها. في المتوسط تقلّ بنسبة الجذر التربيعي لعدد المحاولات: 4 أضعاف المحاولات تعني نصف الضوضاء. |
| نافذة البحث عن القمة | تُحدَّد قبل رؤية البيانات، من الأدبيات | النافذة 250 إلى 600 ميلي ثانية هنا لمثال واحد فقط. القياس الدقيق للسعة والكمون في درس ERPLAB. |
أي قيمة أختار؟
| الإعداد | القيمة | لماذا |
|---|---|---|
| ما يدخل المتوسط | الـ epochs النظيفة من شرط واحد فقط | المتوسط يخلط كل ما تعطيه. إذا كان عندك شرطان، احسب متوسطاً لكل شرط وحده. |
| عدد المحاولات | أكثر ما تستطيع بعد الرفض، ونفس العدد تقريباً لكل شرط | الضوضاء في المتوسط تقلّ بنسبة الجذر التربيعي لعدد المحاولات: 4 أضعاف المحاولات تعني نصف الضوضاء. |
| نافذة البحث عن القمة | تُحدَّد قبل رؤية البيانات، من الأدبيات | النافذة 250 إلى 600 ميلي ثانية هنا لمثال واحد فقط. القياس الدقيق للسعة والكمون في درس ERPLAB. |
كيف أتأكد أنها نجحت؟
4 فحوص سريعة
size(erp)يعطي32 384: قناة × نقطة زمنية، بلا بُعد الـ epochs.- عند Pz قمة موجبة بين 300 و 500 ميلي ثانية تقريباً، وسعتها حوالي 10 ميكروفولت. التوتوريال الرسمي يذكر أن أكبر تباين في ERP هذه البيانات عند حوالي 430 ميلي ثانية.
- الموجة قبل الصفر (فترة baseline) قريبة من الصفر ومسطّحة نسبياً.
- لو رسمت متوسط 10 epochs فقط، ستكون الموجة أكثر خشونة من متوسط الكل.
كيف أتأكد أنها نجحت؟
size(erp)يعطي32 384: قناة × نقطة زمنية، بلا بُعد الـ epochs.- عند Pz قمة موجبة بين 300 و 500 ميلي ثانية تقريباً، وسعتها حوالي 10 ميكروفولت. التوتوريال الرسمي يذكر أن أكبر تباين في ERP هذه البيانات عند حوالي 430 ميلي ثانية.
- الموجة قبل الصفر (فترة baseline) قريبة من الصفر ومسطّحة نسبياً.
- لو رسمت متوسط 10 epochs فقط، ستكون الموجة أكثر خشونة من متوسط الكل.
ما الأخطاء التي يقع فيها كثيرون؟
5 أخطاء، وكيف تتجنّبها
- خلط الشروط في متوسط واحد. في D1 ظهر المربع في موقعين (حقل
position). متوسط الموقعين معاً صحيح كمثال هنا، لكن مقارنة الموقعين تحتاج متوسطاً لكل واحد. مقارنة الشروط في درس رسم ERP للقنوات في المحطة 7. - قراءة القمة الأعلى كأنها “المكوّن”. قمة الموجة في قناة واحدة قد تأتي من أكثر من مكوّن ERP متداخل. الكمون التقريبي هنا للتعرّف على الموجة، لا لاستنتاج علمي.
- الخلط بين اتجاه المحور. موجة موجبة مرسومة لأسفل تُقرأ خطأ كسالبة. انظر للمحور.
- المتوسط قبل الرفض. epoch واحد فيه آرتفاكت كبير يكفي ليغيّر المتوسط. ارفض أولاً، كما في الدرس السابق.
- أعداد مختلفة جداً بين الشروط. شرط بـ 20 محاولة وآخر بـ 80 يختلفان في الضوضاء، فتظهر القمم مختلفة حتى لو كانت الاستجابة نفسها.
ما الأخطاء التي يقع فيها كثيرون؟
- خلط الشروط في متوسط واحد. في D1 ظهر المربع في موقعين (حقل
position). متوسط الموقعين معاً صحيح كمثال هنا، لكن مقارنة الموقعين تحتاج متوسطاً لكل واحد. مقارنة الشروط في درس رسم ERP للقنوات في المحطة 7. - قراءة القمة الأعلى كأنها “المكوّن”. قمة الموجة في قناة واحدة قد تأتي من أكثر من مكوّن ERP متداخل. الكمون التقريبي هنا للتعرّف على الموجة، لا لاستنتاج علمي.
- الخلط بين اتجاه المحور. موجة موجبة مرسومة لأسفل تُقرأ خطأ كسالبة. انظر للمحور.
- المتوسط قبل الرفض. epoch واحد فيه آرتفاكت كبير يكفي ليغيّر المتوسط. ارفض أولاً، كما في الدرس السابق.
- أعداد مختلفة جداً بين الشروط. شرط بـ 20 محاولة وآخر بـ 80 يختلفان في الضوضاء، فتظهر القمم مختلفة حتى لو كانت الاستجابة نفسها.
متصفحك لا يسمح بحفظ التقدّم. كل الدروس متاحة، لكن علامات الإكمال لن تُحفظ.
تم. حُفظ تقدّمك في هذا المتصفح.تراجعكيف أكتبها في ورقتي؟
قالب Methods: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته
قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.
ERPs were computed by averaging the [N] artifact-free epochs time-locked to the square stimulus (EEGLAB 2026.1).كيف أكتبها في ورقتي؟
قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.
ERPs were computed by averaging the [N] artifact-free epochs time-locked to the square stimulus (EEGLAB 2026.1).أين أقرأ أكثر؟
2 مراجع: التوثيق الرسمي أولاً
- EEGLAB Tutorialتوثيق8. Plot data > a. ERPs: Plotting ERPs in a Topographic Map
- Applied Event-Related Potential Data Analysis (Luck)Chapter 6: Assigning Events to Bins, Averaging, Baseline Correction, and Assessing Data Quality
مكتوب لـ EEGLAB 2026.1 · 2026-10-28
للتوسّع
- EEGLAB Tutorial: https://eeglab.org/tutorials/08_Plot_data/Data_Averaging.html (8. Plot data > a. ERPs: Plotting ERPs in a Topographic Map)
- Applied Event-Related Potential Data Analysis (Luck): https://socialsci.libretexts.org/Bookshelves/Psychology/Biological_Psychology/Applied_Event-Related_Potential_Data_Analysis_(Luck) (Chapter 6: Assigning Events to Bins, Averaging, Baseline Correction, and Assessing Data Quality)
تحتاج مساعدة؟
اسأل، أو شاركنا رأيك، أو بلّغ عن خطأ
- بلّغ عن خطأ علمي · يحتاج حساباً على GitHub. لا تملك حساباً؟ استخدم "شاركنا رأيك".