Matlab在同一个表中有多个类型的数字

时间:2015-01-20 10:26:26

标签: matlab int64

我想将这两种类型的数字放在一个表中。一列的索引为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 

1 个答案:

答案 0 :(得分:0)

具有不同数据类型的数据的正确结构是单元阵列。没有办法对标准数组(矩阵)做同样的事情。但是,您可以将所有数据放入double数组中,该数组具有足够的精度来正确表示整数。