كيف يمكنني تنفيذ هذا binning و المتوسط في MATLAB?

StackOverflow https://stackoverflow.com/questions/1787057

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أحاول إجراء binning المتوسط.أنا باستخدام التعليمات البرمجية:

Avg = mean(reshape(a,300,144,27));
AvgF = squeeze(Avg);

السطر الأخير يتخلص من المفرد الأبعاد.

بحيث يمكن أن ينظر إليه أنا في المتوسط أكثر من 300 نقطة.أنه يعمل بشكل جيد باستثناء أوقات عندما يكون لدي عدد من النقاط لا يساوي متعددة من 144*300.

هل هناك أي طريقة لجعل هذا binning متوسط العمل حتى عند عدد من نقاط متعددة من 144*300?

تحرير: آسف إن كان سؤالي بدا مربكا.لتوضيح...

لدي ملف مع 43200 الصفوف 27 الأعمدة.أنا في المتوسط خلال binning 300 الصفوف في وقت واحد ، وهو ما يعني في النهاية أنا تركت مع مصفوفة من حجم 144-من قبل-27.

قانون بلدي كما كتبت أعلاه يعمل فقط عندما يكون لدي بالضبط 43200 الصفوف.في بعض الحالات يجب 43199, 43194 ، الخ..على تشكيل تعمل عندما يكون لدي إجمالي عدد الصفوف التي يتم متعددة من 300 (بن الحجم).هل هناك طريقة لجعل هذا binning متوسط على إجمالي عدد الصفوف متعددة من 300?

هل كانت مفيدة؟

المحلول

أعتقد أنني أفهم المشكلة بشكل أفضل الآن...

إذا a هو قراءة البيانات من الملف الخاص بك (حجم ن-من قبل-27, حيث أن N هو مثالي 43,200) ، ثم أعتقد أنك سوف تريد أن تفعل ما يلي:

nRemove = rem(size(a,1),300);  %# Find the number of points to remove
a = a(1:end-nRemove,:);        %# Trim points to make an even multiple of 300
Avg = mean(reshape(a,300,[],27));
AvgF = squeeze(Avg);

سيؤدي هذا إلى إزالة نقاط مثل هذا العدد من الصفوف في a سوف تكون متعددة من 300.ثم إعادة تشكيل و المتوسط يجب أن تعمل.علما بأنني استخدم [] في الدعوة إلى تشكيل, الذي يتيح معرفة لأي عدد من العمود يجب أن يكون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top