2013-04-25 3 views
2

У меня есть два столбца данных. Первый столбец - это время, а второй столбец - функция времени. Однако некоторые значения времени теряются, поэтому значения функции. Я не знаю индекс потерянной строки (объем данных слишком велик). Например, у меня есть:Matlab: расширяемый массив, потерянные данные

t x+w 
2t 2x+w 
3t 3x+w 
6t 6x+w 
7t 7x+w 

Однако, это должно быть, как:

t x+w 
2t 2x+w 
3t 3x+w 
4t 4x 
5t 5x 
6t 6x+w 
7t 7x+w 

Я хочу, чтобы расширить массив времени и добавить соответствующие значения функции. На самом деле f (t) является случайным, но имеет линейное возрастающее детерминированное поведение. Таким образом, не имеет значения, добавляю ли я два значения среди тысяч. Итак, как я могу это сделать в Matlab?

Извините за мой английский. Надеюсь, я смогу объяснить. Спасибо.

ответ

3

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

t = [1 2 3 6 7]; 
x = 2; 
w = 10; 
X = t*x + w; 

теперь вы можете просто interpolate, чтобы получить недостающие значения X:

ti = 1:7; 
Xi = interp1(t, X, ti); 

или если вы хотите сказать, что у вас есть это:

t = [1 2 3 6 7]; 
X = rand(size(t)); 

затем для заполнения произвольных значений:

Xi(t) = X; %Space out the origianl random value according to t 
Xi(setdiff(1:7,t)) = rand() %Find the missing vlaues using setdiff and replace them with new random values 
ti = 1:7; 
+1

спасибо. Я думаю, что первый будет работать. – newzad

+0

Нет проблем, и добро пожаловать в SO. Если это правильно, отметьте это, нажав на галочку в правом верхнем углу ответа. – Dan