2016-07-12 6 views
0

Можно ли найти разницу между двумя массивами разного размера?Matlab: разница между двумя различными размерами массивов

Моя проблема в том, что у меня есть два массива, которые масштабируются довольно похожими, и мне нужна ошибка в каждой точке.

Данные выглядят следующим образом: -

enter image description here

рыскания данных намного больше, чем рыскания Ref.

+1

это совершенно possible- создать мягкий массив (используйте размер имущества для самой крупной из ваших двух массивов), заполнить проложенный массив меньший массив, а затем сравните. – ha9u63ar

+0

Функция padarray позволяет добавлять значения только в конце или в начале или в обе стороны массива, но я этого не вижу. Мне нужно сопоставить конец и звезду или оба массива и заполнить некоторые элементы одного, потому что слишком малы. –

+0

Я думаю, что с этим изображением обоих массивов без масштабирования необходимо понимать [data2] (https://drive.google.com/open?id=0B20R_Z0cMZiZLTBHWUtjWUZlUFU) –

ответ

0

Вы можете принять очень наивный подход и просто проложить каждый элемент ссылочного массива. Это довольно просто сделать:

n = length(yaw)/length(yaw_ref); 

yaw_ref_pad = zeros(length(yaw), 1); 
for j = 1:length(yaw_ref)-1 
    yaw_ref_pad((n*j):(n*(j+1)) = yaw_ref(j); 
end 

Вы также могли бы сделать что-то более адаптивное, что может или не может быть то, что вы хотите. В этом подходе используются производные, чтобы определить, куда должна переключаться мягкая ссылка. Это можно считать немного круговым, так как ваша система выглядит как завышенная ПИД-система, и это использует выход для семени ввода.

yaw_ref_pad = zeros(length(yaw), 1); 
[x, peaks] = findpeaks(diff(yaw)); 
for j = 1:length(peaks)-1 
    yaw_ref_pad(peaks(j):peaks(j+1)) = yaw_ref(j); 
end 

В любом случае, после заполнения yaw_ref_pad, результат просто

error = yaw_ref_pad - yaw; 
+0

Спасибо, очень много, первый метод работал отлично, и это было именно то, что я искал! –

Смежные вопросы