MATLAB: интерполированный вектор - PullRequest
7 голосов
/ 14 февраля 2011

Как я могу интерполировать вектор в MATLAB?

Например, у меня есть следующая матрица:

M=    
 1 10  
 2 20  
 3 30  
 4 40  

Первый столбец M обозначает независимый параметр x координата, в то время как второй столбец M обозначает выходные данные или y координату.

У меня также есть следующий входной вектор:

a =
 2.3  
 2.1  
 3.5  

Для каждого значения a,Я хочу определить, какой будет результат интерполированного вывода.В этом случае, учитывая a, я хочу вернуть

23   
21   
35

1 Ответ

8 голосов
/ 14 февраля 2011

Вот ответ на вопрос после редактирования, то есть «как интерполировать»

Вы хотите использовать interp1

M = [1 10;2 20;3 30;4 40];
a = [2.3;2.1;3.5;1.2];

interpolatedVector = interp1(M(:,1),M(:,2),a)
interpolatedVector =
    23
    21
    35
    12

Вотответ на вопрос «найти две ближайшие записи в векторе», т.е. исходный вопрос до редактирования.

x=[1,2,3,4,5]'; %'#
a =3.3;

%# sort the absolute difference
[~,idx] = sort(abs(x-a));

%# find the two closest entries
twoClosestIdx = idx(1:2);

%# turn it into a logical array
%#   if linear indices aren't good enough
twoClosestIdxLogical = false(size(x));
twoClosestIdxLogical(twoClosestIdx) = true;
twoClosestIdxLogical =
     0
     0
     1
     1
     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...