我想将这两种类型的数字放在一个表中。一列的索引为int64,另一列的值为single ....
1359410513
1359410521
1359410529
1359410536
1359410542
1359410548
1359410554
40.299999
39.099998
37.900002
36.799999
35.700001
34.700001
33.599998
但是当我把它们放在一个时,值是:2000 X 2 int64。所以所有的值都在点之后被删除了。像这样:
40
39
38
37
36
35
34
任何人都可以帮我吗?如何把它们放在一张桌子里。谢谢
这是一个示例代码...所以基本的想法是当一列是int64时,另一列是单列。结果总是将其中一个转换为相同的类型,结果会失去分辨率:
value1=int64(sort((1359418241-20)*rand(30,1)+20,'ascend'));
value2=single(rand(30,1));
field1='index';
field2='value';
s=struct(field1,value1,field2,value2)
data_table=struct2table(s);
data_cell=table2cell(data_table);
data_mat = cell2mat(data_cell(:, 1));
data_mat1 = cell2mat(data_cell(:, 2));
start_time=701146404;
end_time=1221278149;
%Find the neighbour points
thresholdpoint_start = find(data_mat > start_time, 1)-1;
thresholdpoint_end = find(data_mat >= end_time, 1);
for i=1:thresholdpoint_end-thresholdpoint_start+1
data_ss(i,2)=single(data_mat1(thresholdpoint_start+i-1,1));
data_ss(i,1)=data_mat(thresholdpoint_start+i-1,1);
end
答案 0 :(得分:0)
具有不同数据类型的数据的正确结构是单元阵列。没有办法对标准数组(矩阵)做同样的事情。但是,您可以将所有数据放入double
数组中,该数组具有足够的精度来正确表示整数。