У меня есть этот код для загрузки данных из текстового файла, четыре столбца - строка, 3 целых столбца и десятичное число.
fileID = fopen(Files(j,1).name);
formatSpec = '%*s %d %d %d %f';
data = zeros(0, 4, 'double');
k = 0;
while ~feof(fileID)
k = k+1;
temp = textscan(fileID,formatSpec,10,'HeaderLines',1);
data = [data; [ temp{:} ] ] ;
end
fclose(fileID);
Во временной переменной последний столбец сохраняется как десятичное число, однако команда
данные = [данные; [temp {:}]]
имеет, как следствие, округление, и я получаю 0 или 1 в последнем столбце.
Я спрашиваю, почему это так?
temp выглядит как (1x4 ячейка):
[5248000;5248100;....] [5248100;5248200;....]
[111;95;....] [0,600000000000000;0,570000000000000;....]
данные тогда выглядят как (матрица 1x4):
5248000 5248100 111 1
5248100 5248200 95 1
EDIT:
Повторное тестирование (воссоздание одной и той же переменной, только что скопированные числа из редактора переменных)
temp=cell(1,4);
temp{1}=[0;100;200;300;400;500;600;700;800;900];
temp{2}=[100;200;300;400;500;600;700;800;900;1000];
temp{3}=[143;155;150;128;121;122;137;145;145;126];
temp{4}=[0.340000000000000;0.450000000000000;0.370000000000000;...
0.570000000000000;0.570000000000000;0.580000000000000;...
0.590000000000000;0.500000000000000;0.460000000000000;0.480000000000000];
tempx=[temp{:}]
Это делает это правильно! Последний столбец десятичный.
Но почему он не работает с "реальными" данными из функции textcan?