별표 ('*')가 포함 된 문자 배열을 숫자 형으로 변환하려고 애 쓰고 있습니다.별표를 포함하는 문자 배열을 MATLAB의 숫자로 변환
.dat 파일에서 가져온 데이터를 기반으로하는 문자 벡터의 셀 배열이 있습니다. 예를 들어, 셀 어레이 C
세포 (예를 들어, C{1,1}, C{2,1}, ... C{n,1}
), 각 문자 벡터를 포함하는의 예는, C{1,1}
에 포함 된 열을 포함
'23.000 * * 1.000 1.000 1.000 34.000 5.065 6.719'
내가 숫자를 두 번, MATLAB에 C{1,1}
을 변환하려고
new_double = str2num(C{1,1})
new_double =
23.0000 1.0000 1.0000 1.0000 34.0000 5.0650 6.7190
,536,913을 : 내가 수동으로 별표를 제거하면 코드가 작동
new_double = str2num(C{1,1})
new_double =
[]
빈 배, 예를 반환
내가하고 싶은 것은 추가 처리를 위해 데이터를 이중 배열로 읽는 것뿐입니다. 명령이 별표를 무시하거나 NaN으로 바꾼다면 상관하지 않습니다. 별표가있는 데이터는 중요하지 않습니다. 중요한 것은 마지막 두 열 (예 : 5.065 6.71)의 데이터를 읽는 것입니다. 불행히도 문자 벡터 안에 포함되어 있으므로 색인을 생성 할 수 없습니다. , https://uk.mathworks.com/matlabcentral/answers/127847-how-to-read-csv-file-with-asterix 그러나 : 유일하게 유용한 게시물의 존재,
c2 = C{1,1};
new_double = sscanf(c2,'%f%');
을하지만 별표에서 읽기 중지, 예를 들어,
new_double =
23
내가 지금까지 검색 한 넓은 :
또한 사용하여 시도했다 구분 된 데이터가 아닌 문자 벡터에서 작업하기 때문에이 메서드를 사용할 수 없습니다.
영리합니다. 물론 정규식 접근 방식보다 우수합니다. 나는'str2double'이 그렇게 할 수 있을지 몰랐다. – rayryeng
@rayryeng 감사합니다! 정규식을 사용하는 것도 좋은 접근 방법입니다 –
유익하고 신속한 응답을 해주셔서 감사합니다. 나는 둘 다에서 제비를 배웠다. 'strsplit'에 대한 말을 퍼뜨릴 시간 !! – PyjamaNinja