كيف يمكنني أخذ عينات من مصفوفة في Matlab؟
-
21-09-2019 - |
سؤال
لدي مصفوفة في MATLAB التي أريد أخذ عينات منها كل إدخال آخر:
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
وأنا أريد:
result =
1 9
3 11
كيف يمكنني القيام بذلك بدون حلقة؟
المحلول
لا أعرف طريقة متعددة الأبعاد للقيام بذلك تلقائيًا ، لكن فهرسة Matlab جيدة بما يكفي إذا كنت سعيدًا بتحديده لكل بعد:
a(1:2:end,1:2:end)
نصائح أخرى
يجب أن يعمل هذا مثالك المحدد:
result = a([1 3],[1 3]);
وبشكل عام:
result = a(1:2:size(a,1),1:2:size(a,2));
لمزيد من التفاصيل حول الفهرسة في MATLAB ، يمكنك التحقق من الوثائق هنا.
لقد وجدت هذا اليوم. A
هي المصفوفة الأصلية ، أخذ عينات من كل عنصر s.
Adown=downsample(downsample(A,s)',s)'
إنه يتجول في المصفوفة رأسياً ، ويقوم بنقل ، ثم عينات الاتجاه المتعامد ، ثم ينقل مرة أخرى.
samples_x = floor(linspace(1, size(a,1), new_Nx));
samples_y = floor(linspace(1, size(a,2), new_Ny));
new_a = a(samples_x,samples_y)
لا تنتمي إلى StackOverflow