poster
2019-12-10, 20:41
好的,这似乎是一个简单的问题,但是我有一个问题,我为每个数据集设置了一个计时器,该计时器设置不正确,结果我的计时变得混乱。有任何更正的想法吗?不会丢失任何数据。例
计时器col理想情况下应为
计时器,我的读
1 3
2 4
3 5
4 6
5 1
6 2
我如何更改第2列或创建类似第1列的新列,而不更改具有数据的其他行的顺序,这只是一个例子,因为我的文件长度为86000长,而且我缺少计时器,我不想错过,这在那个时间段内没有数据。
谢谢
编辑:我不想更改其他列。库仑1是gps计数器,因此由于其他一些问题,它不与comp计时器同步。我只想将第一行更改为从高到低而不影响其他行。还照顾丢失的点(如果我不关心丢失的点,简单的n = 1:最大可以工作。
在这种情况下,缺少计时器指示缺少数据。例如我有4,5,8,9缺少6,7
好的,让我尝试编辑agian的8600x 80数据矩阵:定时器是一行,应该从0到8600,但是定时器在奇数时间启动,所以我从中间开始数据,比如说3400,所以在中间的一天,我的计时器变为0,然后又回到1。但是其他行都没问题。我只需要2个基于计时器的其他集合作为时间。我不能使用T = 1:length(file),因为它会忽略错过的时间戳(计时器)
例如我的数据显示为
计时器,我的读
1 3
2 4
3 5
4 8
5 9
8 1
9 2
这样您可以看到缺少6,7的时间戳。如果我使用n = 1:length(file)我会得到1 2 3 4 5 6 7这是错误的我想要1 2 3 4 5 8 9
而不更改其他行的顺序,因此我无法对整个文件使用排序。
回答:
我认为以下问题
数据说
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))
更多&回答... (https://stackoverflow.com/questions/2723172)
计时器col理想情况下应为
计时器,我的读
1 3
2 4
3 5
4 6
5 1
6 2
我如何更改第2列或创建类似第1列的新列,而不更改具有数据的其他行的顺序,这只是一个例子,因为我的文件长度为86000长,而且我缺少计时器,我不想错过,这在那个时间段内没有数据。
谢谢
编辑:我不想更改其他列。库仑1是gps计数器,因此由于其他一些问题,它不与comp计时器同步。我只想将第一行更改为从高到低而不影响其他行。还照顾丢失的点(如果我不关心丢失的点,简单的n = 1:最大可以工作。
在这种情况下,缺少计时器指示缺少数据。例如我有4,5,8,9缺少6,7
好的,让我尝试编辑agian的8600x 80数据矩阵:定时器是一行,应该从0到8600,但是定时器在奇数时间启动,所以我从中间开始数据,比如说3400,所以在中间的一天,我的计时器变为0,然后又回到1。但是其他行都没问题。我只需要2个基于计时器的其他集合作为时间。我不能使用T = 1:length(file),因为它会忽略错过的时间戳(计时器)
例如我的数据显示为
计时器,我的读
1 3
2 4
3 5
4 8
5 9
8 1
9 2
这样您可以看到缺少6,7的时间戳。如果我使用n = 1:length(file)我会得到1 2 3 4 5 6 7这是错误的我想要1 2 3 4 5 8 9
而不更改其他行的顺序,因此我无法对整个文件使用排序。
回答:
我认为以下问题
数据说
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))
更多&回答... (https://stackoverflow.com/questions/2723172)