计时器应该是
计时器,我的读取 1 3
2 4
3 5
4 6
5 1
6 2
如何更改colum 2或创建一个新的colum,其读取像colum 1而不更改具有数据的行的顺序 这只是一个例子,因为我的文件长度是86000长,我也错过了我不想错过的计时器,这在那段时间内没有实现数据。
感谢
编辑:我不想更改其他列。 coulm 1是gps计数器,因此由于其他一些问题,它不与comp计时器同步。我只想更改第一行,使其从高到低而不影响其他行。也照顾丢失的分数(如果我不关心丢失的分数,那么简单的n = 1:max会起作用。
缺少计时器表示缺少数据。例如,我有4,5,8,9缺少6,7
好的,让我尝试编辑agian 它是一个8600x 80的数据矩阵: 计时器是一行,应该从0到8600 但计时器从奇数时间开始,所以我从中间开始数据,比方说3400,所以在中间我的计时器变为0然后又变回1。 但我的其他行很好。我只需要根据计时器作为时间绘制其他2套。 我不能使用T = 1:长度(文件),因为它忽略错过的时间戳(计时器)
例如我的数据读起来像
计时器,我的读取 1 3
2 4
3 5
4 8
5 9
8 1
9 2
所以你可以看到缺少时间戳6,7。 如果我使用n = 1:长度(文件) 我会的 1 2 3 4 5 6 7 这是错的 我想要 1 2 3 4 5 8 9
不改变其他行的顺序,所以我不能对整个文件使用sort。
答案 0 :(得分:2)
我假设以下问题
数据说
3 100
4 101
5 102
NaN 0
1 104
2 105
你想要
1 100
2 101
3 102
NaN 0
4 104
5 105
我会解决这个问题:
%# create test data
data = [3 100
4 101
5 102
NaN 0
1 104
2 105];
%# find good rows (if missing data are indicated by zeros, use
%# goodRows = data(:,1) > 0;
goodRows = isfinite(data(:,1));
%# count good rows
nGoodRows = sum(goodRows);
%# replace the first column with sequential numbers, but only in good rows
data(goodRows,1) = 1:nGoodRows;
data =
1 100
2 101
3 102
NaN 0
4 104
5 105
编辑1
这次我也许明白你的问题
数据说
4 101
5 102
1 104
2 105
你想要
1 4 101
2 5 102
4 1 104
5 2 105
这可以通过以下方式实现
%# test data
data = [4 101
5 102
1 104
2 105];
%# use sort to get the correct order of the numbers and add it to the left of data
out = [sort(data(:,1)),data]
out =
1 4 101
2 5 102
4 1 104
5 2 105
编辑2
请注意,out
是EDIT 1中解决方案的结果
您似乎想要绘制数据,以便没有缺失值的条目。一种方法是用点做一个图 - 没有一个点用于丢失数据。
plot(out(:,1),out(:,3),'.')
如果要绘制被中断的行,则必须将NaN插入out
%# create outNaN, that has NaN-rows for missing entries
outNaN = NaN(max(out(:,1)),size(out,2));
outNaN(out(:,1),:) = out;
%# plot
plot(out(:,1),out(:,3))