2016-04-04 4 views
0

У меня клетка как это: УЗЛОВчисла расщепления в клетке

1.0000000008.00000000.000000000 
2.0000000007.50000000.000000000 
32.0000000010.0000000.000000000 
42.5000000010.0000000.000000000 
52.000000008.00000000.000000000 
62.500000007.50000000.000000000 
7.000000000.000000000.000000000 
810.0000000.000000000.000000000 
910.000000010.0000000.000000000 
101.000000008.00000000.000000000 
11.00000000010.0000000.000000000 
121.0000000010.0000000.000000000 
13.0000000009.50000000.000000000 
141.000000009.50000000.000000000 
152.000000009.50000000.000000000 
162.500000009.50000000.000000000 
1710.00000009.50000000.000000000 
18.0000000007.87500000.000000000 
19.0000000007.75000000.000000000 
20.0000000007.62500000.000000000 
212.1250000010.0000000.000000000 
222.2500000010.0000000.000000000 

мне нужно отделить номер узла, х, у коорд коорд и г коорд. Мне было интересно, есть ли простой способ сделать это. Проблема заключается в отсутствии правильного разделителя или пробелов. Это фактически ячейка 1289x1. И занятое пространство будет% 5d% 10.5f% 10.5f% 10.5f для узлов, x-координата, y-координаты и z-координаты соответственно. Он должен выглядеть следующим образом: 1 .000000000 8.00000000 .000000000 2 .000000000 7.50000000 .000000000 3 2.00000000 10.0000000 .000000000 4 2.50000000 10.0000000 .000000000 5 2.00000000 8.00000000 .000000000 6 2.50000000 7.50000000 .000000000 7 .000000000 .000000000 .000000000 8 10.0000000 .000000000 .000000000 9 10.0000000 10.0000000 .000000000 10 1.00000000 8.00000000 .000000000 Спасибо.

+1

Можете ли вы хотя бы объяснить, как читать вашу камеру? Разграничено ли оно «.». разделить на 4 столбца? а также размер вашей ячейки? это всего лишь 1xN со всеми этими числами как String? – GameOfThrows

+0

Проблема заключается в отсутствии правильного разделителя или пробелов. Это фактически ячейка 1289x1. И занятое пространство будет% 5d% 10.5f% 10.5f% 10.5f для узлов, x-координата, y-координаты и z-координаты соответственно. Он должен выглядеть следующим образом: 1 .000000000 8,00000000 .000000000 2 .000000000 7,50000000 .000000000 3 2,00000000 10,0000000 .000000000 4 2,50000000 10,0000000 .000000000 5 2,00000000 8,00000000 .000000000 6 2,50000000 7,50000000 .000000000 7 .000000000 .000000000 .000000000 8 10.0000000 .000000000 .000000000 9 10.0000000 10.0000000 .000000000 10 1.00000000 8.00000000 .000000000 –

+0

можете ли вы поместить это в свой вопрос вместо комментариев? – GameOfThrows

ответ

0

Это может быть сделано с использованием анализатора, если у вас есть файл в формате txt, вы можете использовать textscan с вашим строковым форматом, или, альтернативно, вы можете использовать strread с вашим форматом и применять его к каждой строке вашей ячейки.

Я дам вам пример: TextScan

fileID = fopen('abc1.txt') 
fmt ='%5d %10.5f %10.5f %10.5f'; 
C = textscan(fileID,fmt); 
D = [double(C{1}),C{2},C{3},C{4}] 

>>D = 

    1    8    0    0   
    2    7.5    0    0 
    32    10    0    0 

.... 

==== ==== EDIT

Пожалуйста, вы можете проверить формат данных? последние 2 строки в частности, у них нет указанного вами формата («% 5d% 10.5f% 10.5f% 10.5f»), вам не хватает нуля или двух. Этот код должен быть хорошим для разбора исправленного формата.

+0

Спасибо @GameOfThrows Обязательно попробуйте это тоже. –

Смежные вопросы