Импорт matlab с пробелом и разделителем табуляции
Мне нужно импортировать текстовый файл в Matlab, который имеет этот формат
text text text
1 0 1 2 3
4 5 6 7
2 10 11 15 18
15 1 18 3
Первый столбец разделен со вторым разделителем табуляции, а остальные данные разделены пробелом. Я попытался импортировать его с помощью этого:
g = importdata('file.txt',delimiterIn,headerlinesIn);
delimiterIn = ' ';
headerlinesIn = 1;
но тогда извлеченная таблица выглядит так:
text text text
1 0 1 2 3
4 5 6 7 nan
2 10 11 15 18
15 1 18 3 nan
Что мне нужно, так это таблица, поддерживающая формат, с первым столбцом g.data, а затем со всеми остальными.
Я хочу выходную матрицу, как
1 0 1 2 3
4 5 6 7
2 10 11 15 18
15 1 18 3
Затем, если мне нужно извлечь данные, представленные 2 в первом столбце, я могу поместить их в другую матрицу со значениями
10 11 15 18
15 1 18 3
каждое число внутри ячейки матрицы
Как мне это сделать?
2 ответа
Решение
Решение может быть:
fid = fopen('test.txt');
M = {[]};Midx=1;
l = fgetl(fid); %header
l = fgetl(fid);
while ~isnumeric(l)
idx = str2double(l(1));
if ~isnan(idx)
Midx=idx;
M{Midx}=[];
l = l(2:end);
end
val = cell2mat(textscan(l,'%f'))';
M{Midx}=[M{Midx};val];
l=fgetl(fid);
end
fclose(fid);
Может быть, слишком прагматично, но это может помочь:
for i=1:size(A,1)
if isnan(A(i,end))==1
A(i,2:end) = A(i,1:4);
A(i,1) = NaN;
end
end
for i=1:size(A,1)
if A(i,1)==2
B = A(i:i+1,2:end);
end
end