المحطة 3 · الدرس 1
إعادة أخذ العينات
eeglab_data.set (D1) · لا شيء: البيانات كما نزّلتها.تنزيل البيانات (يفتح في نافذة جديدة)سكربت الوصول لهذه الحالة
[ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab;
eeglabRoot = fileparts(which('eeglab'));
EEG = pop_loadset('eeglab_data.set', fullfile(eeglabRoot, 'sample_data'));
[ALLEEG, EEG, CURRENTSET] = pop_newset(ALLEEG, EEG, 0, 'setname', 'Continuous EEG Data', 'gui', 'off');
eeglab redraw;زر الرجوع في متصفحك يعيدك لنفس المكان الذي كنت فيه، فافتح ما تشاء بلا قلق.
الفكرة باختصار
معدل العيّناتsampling rateعدد العيّنات المسجّلة في الثانية لكل قناة. (sampling rate) هو عدد القياسات في الثانية لكل قناةchannelالإشارة المسجّلة من قطب واحد، وهي ما يعرضه EEGLAB.. أجهزة EEGتسجيل النشاط الكهربائي للدماغ من أقطاب على فروة الرأس. تسجّل غالباً بـ 500 أو 1000 هرتز، أو أكثر. أما D1 فمعدلها 128 هرتز أصلاً، فالمسار لا يخفّضه، والنسخة التي تصنعها هنا للمقارنة فقط.
هذا المعدل العالي يكبّر حجم الملف، ويبطّئ كل خطوة بعده، وخاصة ICAطريقة تفصل الإشارة المسجّلة إلى مصادر مستقلة، بعضها دماغي وبعضها آرتفاكت.. وأغلب تحليلات ERPمتوسط استجابة الدماغ لحدث معيّن عبر محاولات كثيرة. لا تحتاج ترددات فوق 40 هرتز تقريباً.
قبل وبعد

أسئلتك بعد هذا، كل جواب في قسمه:
لماذا أحتاج هذه الخطوة؟
السبب بالتفصيل، والمصطلحات التي تحتاجها
لذلك تخفّض معدل عيّنةsampleقيمة واحدة للإشارة في لحظة زمنية واحدة. (تخفيض معدل العيّناتdownsamplingتقليل معدل العيّنات لتصغير البيانات وتسريع المعالجة.) مرة واحدة في بداية المعالجة، فتصبح كل الخطوات التالية أسرع.
لكن للتخفيض حدّ. أعلى ترددfrequencyعدد الدورات في الثانية، ويُقاس بالهرتز. تستطيع البيانات تمثيله هو نصف معدل العيّنات، واسمه تردد Nyquist (تردد NyquistNyquist frequencyنصف معدل العيّنات، وهو أعلى تردد يمكن تمثيله بلا تشويه.). أي تردد فوقه لا يختفي، بل يظهر بالخطأ كتردد أقل. هذا اسمه التداخل الطيفيaliasingظهور تردد عالٍ كأنه تردد منخفض لأن معدل العيّنات أقل من اللازم. (aliasing).
لهذا يطبّق EEGLAB فلترfilterأداة تُضعف ترددات معيّنة في الإشارة وتُبقي غيرها. low-passفلتر يمرّر الترددات المنخفضة ويُضعف العالية مثل نشاط العضلات. لمنع التداخل الطيفي قبل التخفيض، تلقائياً. هذه العملية كلها اسمها إعادة أخذ العيّنات (resampling).
لماذا أحتاج هذه الخطوة؟
لذلك تخفّض معدل العيّنات (downsampling) مرة واحدة في بداية المعالجة، فتصبح كل الخطوات التالية أسرع.
لكن للتخفيض حدّ. أعلى تردد تستطيع البيانات تمثيله هو نصف معدل العيّنات، واسمه تردد Nyquist (Nyquist frequency). أي تردد فوقه لا يختفي، بل يظهر بالخطأ كتردد أقل. هذا اسمه التداخل الطيفي (aliasing).
لهذا يطبّق EEGLAB فلتر low-pass لمنع التداخل الطيفي قبل التخفيض، تلقائياً. هذه العملية كلها اسمها إعادة أخذ العيّنات (resampling).
كيف أطبّقها في EEGLAB؟
6 خطوة من القوائم
ابدأ و D1 مفتوحة كما في “نقطة البداية”. في نافذة EEGLAB الرئيسية لاحظ القيم الحالية: Sampling rate (Hz) تساوي 128، و Frames per epoch تساوي 30504، و Events تساوي 154.
- افتح Tools ثم Change sampling rate.
- تظهر نافذة بعنوان Resample current dataset — pop_resample(). في خانة New sampling rate اكتب
64، ثم اضغط OK. - تطبع نافذة الأوامر أرقام القنوات واحدة بعد الأخرى أثناء المعالجة، ثم
resampling finished. - تظهر نافذة تسمية الداتاست الجديدة، وتقترح
Continuous EEG Data resampled. غيّره إلىD1 64Hz، واترك Overwrite it in memory (set=yes; unset=create a new dataset) غير مفعّل. صارت عندك داتاست ثانية، والأولى لم تتغيّر. - قارن الداتاستين بالعرض المتتابع: افتح Plot ثم Channel data (scroll) على كل واحدة. الشكل العام متشابه، والنسخة الجديدة أنعم قليلاً.
- ارجع إلى الداتاست الأولى من قائمة Datasets. لا تحفظ
D1 64Hz، فالمسار لا يستخدمها.
كيف أطبّقها في EEGLAB؟
ابدأ و D1 مفتوحة كما في “نقطة البداية”. في نافذة EEGLAB الرئيسية لاحظ القيم الحالية: Sampling rate (Hz) تساوي 128، و Frames per epoch تساوي 30504، و Events تساوي 154.
- افتح Tools ثم Change sampling rate.
- تظهر نافذة بعنوان Resample current dataset — pop_resample(). في خانة New sampling rate اكتب
64، ثم اضغط OK. - تطبع نافذة الأوامر أرقام القنوات واحدة بعد الأخرى أثناء المعالجة، ثم
resampling finished. - تظهر نافذة تسمية الداتاست الجديدة، وتقترح
Continuous EEG Data resampled. غيّره إلىD1 64Hz، واترك Overwrite it in memory (set=yes; unset=create a new dataset) غير مفعّل. صارت عندك داتاست ثانية، والأولى لم تتغيّر. - قارن الداتاستين بالعرض المتتابع: افتح Plot ثم Channel data (scroll) على كل واحدة. الشكل العام متشابه، والنسخة الجديدة أنعم قليلاً.
- ارجع إلى الداتاست الأولى من قائمة Datasets. لا تحفظ
D1 64Hz، فالمسار لا يستخدمها.
كيف أكتبها بالكود؟
نفس الخطوات في 16 أسطر MATLAB
% Exercise only: a temporary copy at half the sampling rate
EEG_64 = pop_resample(EEG, 64);
EEG_64.setname = 'D1 64Hz';
% Compare rate, length and events
fprintf('Original : %g Hz, %d samples, %d events\n', EEG.srate, EEG.pnts, length(EEG.event));
fprintf('Resampled: %g Hz, %d samples, %d events\n', EEG_64.srate, EEG_64.pnts, length(EEG_64.event));
% The same 2 seconds of channel Cz at both rates
cz = find(strcmp({EEG.chanlocs.labels}, 'Cz'));
t1 = (0:2*EEG.srate-1) / EEG.srate;
t2 = (0:2*EEG_64.srate-1) / EEG_64.srate;
figure; hold on;
plot(t1, EEG.data(cz, 1:numel(t1)), '.-');
plot(t2, EEG_64.data(cz, 1:numel(t2)), 'o-');
legend('128 Hz', '64 Hz');
xlabel('Time (s)'); ylabel('Amplitude (uV)');
% The main path continues on EEG at 128 Hz; EEG_64 is not savedمع بياناتك الخام بـ 1000 هرتز مثلاً، يكون السطر الوحيد الذي تحتاجه في المسار هو EEG = pop_resample(EEG, 250);.
كيف أكتبها بالكود؟
% Exercise only: a temporary copy at half the sampling rate
EEG_64 = pop_resample(EEG, 64);
EEG_64.setname = 'D1 64Hz';
% Compare rate, length and events
fprintf('Original : %g Hz, %d samples, %d events\n', EEG.srate, EEG.pnts, length(EEG.event));
fprintf('Resampled: %g Hz, %d samples, %d events\n', EEG_64.srate, EEG_64.pnts, length(EEG_64.event));
% The same 2 seconds of channel Cz at both rates
cz = find(strcmp({EEG.chanlocs.labels}, 'Cz'));
t1 = (0:2*EEG.srate-1) / EEG.srate;
t2 = (0:2*EEG_64.srate-1) / EEG_64.srate;
figure; hold on;
plot(t1, EEG.data(cz, 1:numel(t1)), '.-');
plot(t2, EEG_64.data(cz, 1:numel(t2)), 'o-');
legend('128 Hz', '64 Hz');
xlabel('Time (s)'); ylabel('Amplitude (uV)');
% The main path continues on EEG at 128 Hz; EEG_64 is not savedمع بياناتك الخام بـ 1000 هرتز مثلاً، يكون السطر الوحيد الذي تحتاجه في المسار هو EEG = pop_resample(EEG, 250);.
أي قيمة أختار؟
القيم المناسبة حسب هدف تحليلك
| الإعداد | القيمة | لماذا |
|---|---|---|
| D1 | لا تغيّر المعدل (128 هرتز) | التوثيق الرسمي: معدل بيانات التوتوريال مقبول أصلاً. |
| بيانات خام بـ 500 أو 1000 هرتز لتحليل ERP | 250 هرتز، أو 256 | تحفظ الترددات حتى 100 هرتز تقريباً، وهذا أعلى بكثير من حاجة ERP. |
| القاعدة العامة | المعدل الجديد ≥ 2.5 × أعلى تردد يهمّك | النظرية تطلب أكثر من الضعف. وفلتر منع التداخل في EEGLAB يحفظ الترددات كاملة حتى 80% من تردد Nyquist الجديد فقط، فتحتاج هامشاً. |
| مكان الخطوة | على البيانات المستمرة، قبل الفلترة والتقطيع | تسرّع كل ما بعدها. و EEGLAB نفسه يحذّر من إعادة أخذ العينات لبيانات مقطّعة. |
أي قيمة أختار؟
| الإعداد | القيمة | لماذا |
|---|---|---|
| D1 | لا تغيّر المعدل (128 هرتز) | التوثيق الرسمي: معدل بيانات التوتوريال مقبول أصلاً. |
| بيانات خام بـ 500 أو 1000 هرتز لتحليل ERP | 250 هرتز، أو 256 | تحفظ الترددات حتى 100 هرتز تقريباً، وهذا أعلى بكثير من حاجة ERP. |
| القاعدة العامة | المعدل الجديد ≥ 2.5 × أعلى تردد يهمّك | النظرية تطلب أكثر من الضعف. وفلتر منع التداخل في EEGLAB يحفظ الترددات كاملة حتى 80% من تردد Nyquist الجديد فقط، فتحتاج هامشاً. |
| مكان الخطوة | على البيانات المستمرة، قبل الفلترة والتقطيع | تسرّع كل ما بعدها. و EEGLAB نفسه يحذّر من إعادة أخذ العينات لبيانات مقطّعة. |
كيف أتأكد أنها نجحت؟
4 فحوص سريعة
- في نافذة EEGLAB الرئيسية، والداتاست
D1 64Hzهي الحالية: Sampling rate (Hz) تساوي 64، و Frames per epoch تساوي 15252، أي نصف العدد الأصلي. - عدد الأحداث لم يتغيّر: Events ما زالت 154.
- طول التسجيل لم يتغيّر: Epoch end (sec) تساوي 238.297 في النسخة الجديدة، و238.305 في الأصلية. الفرق أقل من عيّنة واحدة.
- الداتاست الأصلية سليمة: ارجع للداتاست الأولى وتأكد أن معدلها ما زال 128.
الجملة التالية لبياناتك الخام بعد تخفيضها إلى 250 هرتز. في D1 لا تكتبها، لأن المسار لا يغيّر المعدل.
كيف أتأكد أنها نجحت؟
- في نافذة EEGLAB الرئيسية، والداتاست
D1 64Hzهي الحالية: Sampling rate (Hz) تساوي 64، و Frames per epoch تساوي 15252، أي نصف العدد الأصلي. - عدد الأحداث لم يتغيّر: Events ما زالت 154.
- طول التسجيل لم يتغيّر: Epoch end (sec) تساوي 238.297 في النسخة الجديدة، و238.305 في الأصلية. الفرق أقل من عيّنة واحدة.
- الداتاست الأصلية سليمة: ارجع للداتاست الأولى وتأكد أن معدلها ما زال 128.
الجملة التالية لبياناتك الخام بعد تخفيضها إلى 250 هرتز. في D1 لا تكتبها، لأن المسار لا يغيّر المعدل.
ما الأخطاء التي يقع فيها كثيرون؟
4 أخطاء، وكيف تتجنّبها
- التخفيض تحت حاجة التحليل. إذا كنت ستدرس ترددات غاما حول 40 إلى 80 هرتز، فمعدل 128 هرتز لا يكفي. احسب أعلى تردد يهمّك أولاً، ثم اختر المعدل.
- إعادة أخذ العينات بعد التقطيع. افعلها على البيانات المستمرة. مع البيانات المقطّعة يطبع EEGLAB تحذيراً، لأن فلتر منع التداخل يعمل على حواف كل epoch منفصلة.
- تعديل توقيت الأحداث يدوياً. EEGLAB يعيد حساب توقيت كل الأحداث تلقائياً بالمعدل الجديد. لا تقسم الأرقام بنفسك.
- التخفيض بلا سبب. إذا كان المعدل مقبولاً أصلاً، مثل D1، فلا فائدة من تخفيضه. كل خطوة غير ضرورية تغيّر البيانات قليلاً.
ما الأخطاء التي يقع فيها كثيرون؟
- التخفيض تحت حاجة التحليل. إذا كنت ستدرس ترددات غاما حول 40 إلى 80 هرتز، فمعدل 128 هرتز لا يكفي. احسب أعلى تردد يهمّك أولاً، ثم اختر المعدل.
- إعادة أخذ العينات بعد التقطيع. افعلها على البيانات المستمرة. مع البيانات المقطّعة يطبع EEGLAB تحذيراً، لأن فلتر منع التداخل يعمل على حواف كل epoch منفصلة.
- تعديل توقيت الأحداث يدوياً. EEGLAB يعيد حساب توقيت كل الأحداث تلقائياً بالمعدل الجديد. لا تقسم الأرقام بنفسك.
- التخفيض بلا سبب. إذا كان المعدل مقبولاً أصلاً، مثل D1، فلا فائدة من تخفيضه. كل خطوة غير ضرورية تغيّر البيانات قليلاً.
متصفحك لا يسمح بحفظ التقدّم. كل الدروس متاحة، لكن علامات الإكمال لن تُحفظ.
تم. حُفظ تقدّمك في هذا المتصفح.تراجعكيف أكتبها في ورقتي؟
قالب Methods: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته
قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.
Data were downsampled to 250 Hz using pop_resample (EEGLAB 2026.1), which applies an anti-aliasing low-pass FIR filter (Kaiser window) before resampling.كيف أكتبها في ورقتي؟
قالب: عدّل البيانات والإعدادات والإصدارات لتطابق ما نفّذته.
Data were downsampled to 250 Hz using pop_resample (EEGLAB 2026.1), which applies an anti-aliasing low-pass FIR filter (Kaiser window) before resampling.أين أقرأ أكثر؟
3 مراجع: التوثيق الرسمي أولاً
- EEGLAB Tutorialتوثيق5. Preprocess data > c. Resampling
- Makoto's preprocessing pipeline§3 Downsample if necessary
- EEGLAB preprocessing #3: Rereferencing and resamplingفيديوالفيديو كاملاً · 11:48
مكتوب لـ EEGLAB 2026.1 · 2026-10-29
للتوسّع
- EEGLAB Tutorial: https://eeglab.org/tutorials/05_Preprocess/resampling.html (5. Preprocess data > c. Resampling)
- Makoto's preprocessing pipeline: https://eeglab.ucsd.edu/wiki/Makoto%27s_preprocessing_pipeline (§3 Downsample if necessary)
- EEGLAB preprocessing #3: Rereferencing and resampling: https://www.youtube.com/watch?v=hByLyGYecjI (الفيديو كاملاً)
تحتاج مساعدة؟
اسأل، أو شاركنا رأيك، أو بلّغ عن خطأ
- بلّغ عن خطأ علمي · يحتاج حساباً على GitHub. لا تملك حساباً؟ استخدم "شاركنا رأيك".