Найти соответствующее значение первого столбца из второго столбца в массиве, используя эффективный метод?MATLAB - PullRequest
0 голосов
/ 10 октября 2018

У меня есть массив из двух столбцов.

1-й столбец - Время, второй - скорость.

Я использую этот код, чтобы найти соответствующее значение времени из второго столбца.Этот код работает нормально, но он замедляет процесс моделирования.

Может кто-нибудь предложить эффективный способ сделать это?

t=T';                       % Time is in seconds
vv=vel';                    % Speed is in meter per seconds
data= [t, vv];              % both time and velocity in one array
v2 = data(dsearchn(data(:,1),t2),2); 

Пример массива:

0.0  0.0
2.3  0.9
3.2  1.2
4.0  1.5
4.6  1.8
5.1  2.0
5.6  2.1
6.0  2.3
6.5  2.5
6.9  2.6
7.2  2.8
7.6  2.9
7.9  3.0
8.2  3.2
8.5  3.3
8.8  3.4
9.1  3.5
9.4  3.6
9.7  3.7
10.0 3.8
10.2 3.9
10.5 4.0
10.7 4.1
11.0 4.2
11.2 4.3

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Как указано в комментариях, вам нужно определить, что вы хотите сделать, если ваш «выбор» времени (1-й столбец данных) не содержится в вашей матрице.

Вот несколько примеров вариантов.Обратите внимание, что я сделал data матрицу nx2 из вашего образца.

Только точное совпадение: Если choice не в data, то пустые результаты.

results = data(data(:,1) == choice,2)

Пример использования:

>> choice = 2.3; %Time contained in data
>> results = data(data(:,1) == choice,2)
results =
    0.9000

>> choice = 2.31; %Time NOT contained in data
>> results = data(data(:,1) == choice,2)
results =
   Empty matrix: 0-by-1

Ближайшее совпадение : возврат ближайшего совпадения

result = data(dsearchn(data(:,1),choice),2)

Пример использования:

>> choice = 2.3; %Time contained in data
>> result = data(dsearchn(data(:,1),choice),2)
result =
    0.9000

>> choice = 2.31; %Time NOT contained in data
>> result = data(dsearchn(data(:,1),choice),2)
result =
    0.9000
0 голосов
/ 10 октября 2018

попробуйте что-то вроде:

matrix = zeros(length(Time_Vector),2);  % initialize zero matrix
matrix(:,1) = Time_Vector;  %fill first column with time vector
matrix(:,2) = Speed_Vector;  %fill second column with speed vector

matrix(5,:)  %displays the fifth row in Command Window as (Time , Speed)

и затем вы измените значение 5 на любое значение, которое вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...