2017-02-15 1 views
0

두 개의 열로 구분 된 정수 (각각 21 자리) 목록으로 구성된 .txt 파일 (이름은 B.txt)이 있습니다 (실제로는 파일에 여러 더 행) :Matlab에서 21 자리수의 정수가 들어있는 .txt 파일 가져 오기

116374117927631468606 101765416973555767821 
112188647432305746617 107727150903234299458 
116719211656774388392 100432456209427807893 
117421021456205115327 101096322838605097368 

나는 나 각 정수가 두 번째 열에서 반복 횟수를 계산 할 수있는 형식 matlab에이 파일을 가져올.

내가 지금 뭐하는 거지 무슨

A=importdata('B.txt'); 
A_2=A(:,2); 
a = unique(A_2); 
out = [a,histc(A_2(:),a)]; 

질문입니다 :이 작업을 수행하는 더 좋은 방법이 있나요? 예를 들어, 1부터 시작하여 모든 것을 "재 명명"하는 방법이 있습니까?

특히, 거대한 정수를 숫자로 가져 와서 정밀도를 잃어 버리는 지 궁금합니다.

답변

2

예, 정밀도가 느슨합니다. 시도하십시오 112188647432305746617==112188647432305746616.

데이터를 숫자 대신 텍스트로 가져오고 VPA를 사용하는 것이 좋습니다. 동일한 예제 사용 :

a=vpa('112188647432305746617'); 
b=vpa('112188647432305746616'); 
a==b 
+0

감사합니다. 제안을 사용하여 코드를 다시 작성하는 방법을보다 정확하게 설명 할 수 있습니까? 또한, 1에서 시작하여 모든 것을 "재 명명"하는 방법이 있습니까? – user3285148

+0

@ user3285148'fscanf'로 파일을 읽고'vpa'로 문자열을 넣은 다음'A_2'에 넣으십시오. 나는 당신이 "relabel"에 의해 의미하는 것을 이해하지 못합니다 –

+0

고마워요. formatSpec을 입력해야하는 fscan을 사용할 때? – user3285148

관련 문제