Номера нескольких типов Matlab в одной таблице

Я хочу поместить эти два типа чисел в одну таблицу. Один столбец с индексом 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 

person user2307344    schedule 20.01.2015    source источник
comment
Извиняюсь за полноту, но я не уверен, что понимаю, как первый набор чисел связан с десятичными числами. Каково отношение?   -  person kkuilla    schedule 20.01.2015
comment
первый набор чисел является индексом, второй - реальным значением в одном формате. В настоящее время они хранятся в формате ячейки, что не является проблемой. Но я хочу получить часть значения на основе индекса, поэтому я конвертирую его в матовый формат... Затем отсюда я хочу поместить их в одну матрицу с двумя столбцами... вот проблема.. это становится число третьих частей..поэтому все значения за точкой обрезаны...понимаете?   -  person user2307344    schedule 20.01.2015


Ответы (1)


Правильная структура данных с разными типами данных — это массив ячеек. Невозможно сделать то же самое со стандартным массивом (матрицей). Однако вы можете поместить все свои данные в массив double, который имеет достаточную точность для правильного представления ваших целых чисел.

person A. Donda    schedule 20.01.2015
comment
Спасибо... но тогда мой индекс уже не будет таким точным... более того, если я могу хранить их в ячейке, как я могу их построить? это ячейка 30 X 2 .. еще раз спасибо - person user2307344; 21.01.2015
comment
@ user2307344, вопрос в том, зачем они вообще нужны в одном массиве? Просто сохраните две переменные для двух типов данных, одну типа int64 и другую типа double. plot в любом случае нужны отдельные аргументы для осей x и y. - person A. Donda; 21.01.2015
comment
Но даже с одним двойным массивом ваши индексы все равно будут точными. Помните, что то, что выводится на экран, не является полным внутренним представлением. Согласно Википедии, точность числа double составляет 15–17 знаков после запятой. Ваши индексы имеют 9 десятичных цифр, так что здесь вы в безопасности. - person A. Donda; 21.01.2015
comment
В качестве третьего варианта у вас может быть массив ячеек с двумя записями, первая из которых представляет собой массив ваших индексов int64, а вторая — двойной массив других чисел. - person A. Donda; 21.01.2015
comment
Большое спасибо @ А. Донда. Я сделал это, как вы сказали в начале, с двойным ... так что теперь все работает нормально ... - person user2307344; 22.01.2015