당신은 주제를 찾고 있습니까 “matlab 파일 입출력 – MATLAB polyfit, polyval, 파일입출력(fopen, fprintf, load)“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 응용수학자 이(가) 작성한 기사에는 조회수 1,561회 및 좋아요 19개 개의 좋아요가 있습니다.
matlab 파일 입출력 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 MATLAB polyfit, polyval, 파일입출력(fopen, fprintf, load) – matlab 파일 입출력 주제에 대한 세부정보를 참조하세요
MATLAB polyfit, polyval, 파일입출력(fopen, fprintf, load)
matlab 파일 입출력 주제에 대한 자세한 내용은 여기를 참조하세요.
[Matlab] 파일 입출력(File I/O) – 네이버 블로그
[Matlab] 파일 입출력(File I/O) … 우연찮게 파일 입출력에 대한 간단한 코드를 작성하게 되었다. … 간단한 코드의 기능은 바로! 텍스트 파일을 읽어 들여 …Source: m.blog.naver.com
Date Published: 7/2/2022
View: 6498
MATLAB 기초 4. 입출력 ( disp( ), fprintf( ), fscanf( ) )
입출력 형식. MATLAB 은 표준 입출력과 파일 입출력에 관한 내장 함수를 제공한다. 표준 입출력 : 키보드를 통해 입력받고 모니터를 통해 결과를 출력.
Source: supermemi.tistory.com
Date Published: 11/24/2021
View: 1054
MATLAB – 텍스트(TEXT)파일 읽기/작업공간으로 데이터 가져오기
MATLAB – 텍스트(TEXT)파일 읽기/작업공간으로 데이터 가져오기 · 위의 로그 파일에서 0.07 이라는 숫자 데이터만 필요할 뿐 위의 시간 헤더들은 필요없다.
Source: gongdolgongdol.tistory.com
Date Published: 3/3/2022
View: 3315
[MATLAB] 09. 데이터 처리와 파일 입출력
파일 입출력에 필요한 주요 함수, 매개변수 및 설명 [ ] 표시는 선택 사항의 의미. save, save(filename, [variableName], [format])
Source: stdcobble.tistory.com
Date Published: 6/10/2021
View: 2288
[Matlab / 매트랩] 12. 외부 데이터(파일) 불러오기와 저장하기
텍스트 파일은 100개가 넘는데 일일이 어떻게 다 붙이니 난 한번만이라도 햄보카고 싶은데 왜 나나 꽈찌쭈는 햄보칼수가 없어 에라이 매트랩 안써 …
Source: engi-agora.tistory.com
Date Published: 2/25/2021
View: 5262
내가 공부한 옥타브2 19. 파일 입출력 – 공머씨의 블로그
save명령과 load명령을 사용해서 실습을 해보겠습니다. m파일과는 다른 기능인데요, (m파일은 matlab script 저장 파일). command window에 어떤 변수들을 …
Source: haai.tistory.com
Date Published: 9/3/2021
View: 429
주제와 관련된 이미지 matlab 파일 입출력
주제와 관련된 더 많은 사진을 참조하십시오 MATLAB polyfit, polyval, 파일입출력(fopen, fprintf, load). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 matlab 파일 입출력
- Author: 응용수학자
- Views: 조회수 1,561회
- Likes: 좋아요 19개
- Date Published: 2020. 4. 19.
- Video Url link: https://www.youtube.com/watch?v=-EJKA0LqQRo
[Matlab] 파일 입출력(File I/O)
우연찮게 파일 입출력에 대한 간단한 코드를 작성하게 되었다.
나중을 위해서 정리해 놔야징~ㅋㅋㅋ
간단한 코드의 기능은 바로!
텍스트 파일을 읽어 들여 다른 이름의 텍스트 파일로 복사를 하는 것이다. 그런 후 제일 끝 라인에 복사한 내용의 라인 수를 출력한다.
M-file로 작성된 코드는 아래와 같다.
▶ fid = fopen(filename, mode)
파일을 여는데 성공이면 3이상의 양의 정수를, 실패하면 -1을 리턴한다. fid는 C언어에서의 파일 포인터로서 파일 식별자 변수이다. 아무거나 써줘도 상관없다. file handle이라는 표현이 맞는 듯 하다. 본 코드에서는 project_ex1.txt라는 파일을 오픈하고 있다. 아래는 모드에 따른 파일 접근 권한을 나타낸 것이다.
▶ status = fclose(fid) / status = fclose(‘all’)
열려진 파일을 닫는다. 성공이면 0을, 실패면 -1을 리턴한다. ‘all’의 경우 열려진 모든 파일 닫는다.
▶ A = fscanf(file handle, format)/ [A , count] = fscanf(fid, format, size)
파일 핸들이 지칭하는 파일을 입력된 아규먼트 포맷으로 읽어들인다. 사이즈를 넣었을 경우는 그 크기 만큼 읽어들인다. count는 현재 읽은 데이터의 개수이다. 위의 경우는 캐릭터(문자) 형으로 하나씩 읽어들인 후 변수 copy에 행렬로 저장된다. INF는 infinite으로서 여기에서는 파일의 끝을 나타낸다. 즉 파일의 끝을 만날 때까지 기록된 모든 문자를 읽어서 변수에 저장한다.
▶ [count, errmsg] = fprintf(fid, format, A, …)
메뉴얼 상에는 행렬 A의 실수 파트만 인지를 한다고 명시되어 있다. 아무튼 행렬 A의 값을 지정해준 포맷으로 해당 파일(fid가 지칭하는 파일)에 쓴다. 읽어 들인 바이트 수를 리턴하고, 실행 과정에서 에러가 있었는지 없었는지 문자열 형태로 리턴한다. 아래는 format이 구성되는 형태에 대한 참고 사항이다.
▶ status = fseek(fid, offset, origin)
fseek는 나름 생각해 봤을 때 상당히 유용한 함수라고 생각된다. 파일을 읽거나 쓰는 경우에 내부적으로 보이지 않는 커서가 움직이게 되는데 이 때, 이 커서의 위치를 컨트롤 할 수 있는 함수가 바로 fseek이다. C언어에서도 동일한 함수가 존재한다. fid는 file handle이고, offset은 origin을 기준으로 했을 때의 오프셋 값이다. origin은 일종의 기준으로서 세가지 값을 갖는다. bof(begining of file), cof(current of file), eof(end of file)이 그것이다. 커서의 위치는 위의 offset과 origin의 값으로 결정된다. 자세한 것은 이후의 포스트를 참조할 것~ ^^
▶ tline = fgets(fid)
fgets는 하나의 라인을 읽어들이는 함수라 생각하면 된다. fid는 역시 file handle이고, 읽어들인 내용이 하나 이상일 경우 행렬로 리턴된다. 비슷한 함수로 fgetl라는 함수가 있다. 역시 자세한 사항은 이후의 포스트를 참조!
호호~
정리를 한다는 건 참으로 힘든 일이다..ㅜㅜ
찾아보고 코딩하고 확인하는 시간은 고작 40분 정도였는데…
정리하는 시간만 거진 2~3시간이다. 헐…
대신 다음에 비슷한 코딩을 할 때 오늘 처럼 이것저것 뒤지지 않아도 되겠지 모~
MATLAB 기초 4. 입출력 ( disp( ), fprintf( ), fscanf( ) )
반응형
2021/03/08 – [Computer Language/Matlab] – MATLAB 기초 3. 벡터 및 행렬 연산 ( \ , / , .*, .^ , size(), reshape(), length() )
4. 입출력 형식
MATLAB 은 표준 입출력과 파일 입출력에 관한 내장 함수를 제공한다.
표준 입출력 : 키보드를 통해 입력받고 모니터를 통해 결과를 출력
파일 입출력 : 저장된 데이터를 읽거나 파일에 연산 결과를 출력하는 것이다.
4-1 disp( )
간단한 메시지 또는 변수의 값을 명령창에 출력할 때 사용한다.
4-2 fprintf( )
파일에 데이터를 입력하고 편집하기 위해 사용된다.
먼저, fopen( )을 통해 파일을 열고 fprintf( )를 통해 원하는 내용을 편집한 후, fclose( )를 사용하여 파일을 닫아준다.
아래 예시를 통해 알아보자.
fopen( )을 통해 trial.dat 파일을 쓰기(‘w’) 위해 만들면 왼쪽 현재 폴더에 trial.dat이 만들어 진 것을 확인 할 수 있다.
이후, fprintf( )를 통해 trial.dat에 a 벡터를 정수형태로 쓰고 fclose( )로 닫으면 다음과 같은 파일을 얻을 수 있다.
이런 식으로 다양한 파일 편집이 가능한데 아래에는 구체적인 옵션들을 설명해뒀다.
fopen 모드 설명 r 읽기를 목적으로 파일 open r+ 읽기 쓰기를 목적으로 파일 open w 기존 내용이 있다면 지우고, 새로운 파일을 만들어 파일 open w+ 기존 내용을 지우고 새로운 파일을 만들어 읽기 쓰기 위해 파일 open a 새로운 파일을 만들고 열거나, 쓰기 위해 기존의 파일을 open하고 파일 끝에 추가시킴 a+ 새로운 파일을 만들고 개방하거나 읽기 및 쓰기를 위해 기존의 파일을 open하고 파일 끝에 추가시킴
fprintf 형식 문자 설명 %d 부호 있는 10진수 출력 %u 부호 없는 10진수 출력 %o 8진수 출력 %x 16진수 출력 %f 부동 소수점 출력 %e 소문자 e를 사용한 지수 형태 출력 %c 단일 문자 출력 %s 문자열 출력
4-3 fscanf( )
fopen을 통하여 파일을 열고, 파일속에 있는 내용을 변수에 입력시키기 위해서 사용한다.
file = fopen(‘file_name’,’mode’);
A = fscanf(file, ‘format’, size);
fclose(file)
예제를 통해 알아보자.
fscanf 에서 읽어올 데이터 크기를 지정할 수 있는데,
예시 처럼 inf 라고 입력하면 모든 데이터를 가져오는 것을 말한다.
만약 저 자리에 실수를 집어넣으면, 열 벡터에서 n개의 데이터를 읽는다.
만약 저 자리에 [m,n] 을 넣는다면, m x n 행렬을 만들 수 있는 데이터를 읽는다.
2021/03/08 – [Computer Language/Matlab] – MATLAB 기초 5. 기본 프로그래밍 (if, for, while)
참고도서
MATLAB을 이용한 알기 쉬운 수치해석. 박태희 지음. 생능출판
반응형
텍스트(TEXT)파일 읽기/작업공간으로 데이터 가져오기
반응형
텍스트 파일에 있는 로그 데이터를 MATLAB에서 활용하기 위해 작업공간으로 가져와야할 경우가 있다.
그래서 텍스트(데이터)파일에서 필요없는 헤드 구분을 제거하고 데이터만 작업공간에 변수로 가져오겠다.
로그파일을 작업공간으로 가져오는게 목표다
아래는 로그파일이다
위의 로그 파일에서 0.07 이라는 숫자 데이터만 필요할 뿐 위의 시간 헤더들은 필요없다.
제거하고 데이터만 가져오는 코드는 아래와 같다.
1. 파일열고
2. 해드라인 필요없는 숫자아닌것들 8줄 지워버리고
3. data 변수에다가 8줄 밑에거 다넣어버리고 (데이터 개수,형식에 맞게 %s,%f 사용하면됨)
4. data 변수에 있는 것들을 x,y에 넣어보기도 하고
5. DATA_CON이라는 변수에 3가지 변수를 한 꺼번에 넣어보기도하고
6. 파일 닫는다.
결과는 아래와 같다
y 값은 위의 로그 데이터가 들어가 있고
DATA_CON 변수에는 3가지가 들어가 있다.
반응형
[MATLAB] 09. 데이터 처리와 파일 입출력
NOTICE : 독학인 만큼, 잘못된 내용이 있을 수 있습니다. 내용 지적은 언제나 환영합니다.
※ 이 글은 최소한 Python과 같은 프로그래밍 언어를 한 번 이상 접한 사람을 독자로 가정하여 작성되었습니다. 사용버전은 R2019a기준입니다. 또한 기본적인 프로그램 조작보다는 프로그래밍에 초점을 맞추어 작성하였습니다.
엑셀에서 여러 데이터를 처리하듯, MATLAB에서도 여러 데이터를 처리하고, 시각화할 상황이 생길 수 있습니다. 엑셀에서 행 단위로 측정값을 기록하고, 열마다 측정값의 종류를 다르게 하듯이, 행렬로 다음과 같이 데이터를 저장할 수 있습니다.
%시간 측정값1 측정값2 data = [1.0000 0.6715 0.8884 2.0000 -1.2075 -1.1471 3.0000 0.7172 -1.0689 4.0000 1.6302 -0.8095 5.0000 0.4889 -2.9443 6.0000 1.0347 1.4384 7.0000 0.7269 0.3252 8.0000 -0.3034 -0.7549 9.0000 0.2939 1.3703 10.0000 -0.7873 -1.7115 ] ;
이렇게 구해진 데이터의 평균과 표준편차를 구해봅시다. 이는 mean, std함수로 빠르게 구할 수 있고, 그 결과는 1×N 행렬입니다.
>> mean(data) ans = 5.5000 0.3265 -0.4414 >> std(data) ans = 3.0277 0.8597 1.4211
만약, 최댓값과 그 위치를 찾아야 한다면 어떨까요? max함수를 이용하면 됩니다.
>> max(data) ans = 10.0000 1.6302 1.4384
그런데, 위치에 대한 정보가 없습니다. 이는 max가 1×N배열을 2개 반환하기 때문입니다. 이는 다음과 같이 하여 얻을 수 있습니다. (1×2 행렬을 반환하는 것과 1×1 행렬을 2개 반환하는 것에 차이가 있음을 주의하세요!)
>> [vmax, pmax ] = max(data) vmax = 10.0000 1.6302 1.4384 pmax = 10 4 6
만약 위치에 대한 정보만 필요하다면 물결표(~)를 이용해 특정 위치의 입력값을 다음과 같이 무시할 수 있습니다.
[~ , pmax] = max(data)그 외 통계나 데이터 분석 관련 함수는 아래 명령어로 확인가능합니다.
>> % 한번에 다 표시되지 않게 more on인 상태입니다. 단순히 블로그 글이 길어지는 걸 막으려고 추가했습니다. >> help datafun Data analysis and Fourier transforms. Basic operations. sum – Sum of elements. prod – Product of elements. min – Smallest component. –more–
>> help stats stats – Return cached values and statistics for MemoizedFunction object This MATLAB function returns cached values and statistics on the use of a MemoizedFunction object. s = stats(mfcn) –more–
만약, 외부의 데이터를 불러 온다면 어떻게 해야할까요? 이에 관해 save와 load, readtable, writetable, xlsread, xlswrite 등의 함수를 이용할 수 있습니다. 자세한 용법은 각 문서를 참조하시고, 여기서는 간단한 용법만 다뤄보겠습니다.
파일 입출력에
필요한 주요 함수 매개변수 및 설명
[ ] 표시는 선택 사항의 의미 save save(filename, [variableName], [format])(모두 string형 또는 문자 벡터) [format]에 따라 filename이름을 가진 파일로
변수 [variableName] 저장.(생략시 전체) load load(filename, [format], [variableName])
(모두 string형 또는 문자 벡터) [format]에 따라 filename을 [variableName] 변수에 불러옴. writetable writetable( tableVariable , [filename], [options])
(tableVariable빼고 string형 또는 문자 벡터) [options]들에 따라서 [filename]에 테이블형 변수 tableVariable를 저장. readtable tableVariable = readtable(filename, [options])
(매개변수는 string또는 char벡터) [options]들에 따라서 [filename]을 테이블형 변수로 바꿔 테이블형 반환 table2array table2array(tableVar) 테이블을 배열로 변환 array2table array2table(arrayVar) 배열을 테이블을 배열로 변환 파일 입출력 시
유용한 함수 int2str int2str(intVar) 정수를 문자열로 변환
자세한 설명은 공식 문서를 참고하시면 되겠습니다. 예시는 save, load, sprintf만 가지고 나타내겠습니다.
%시간 측정값1 측정값2 data(:,:,1) = … [1.0000 0.6715 0.8884 2.0000 -1.2075 -1.1471 3.0000 0.7172 -1.0689 4.0000 1.6302 -0.8095 5.0000 0.4889 -2.9443 6.0000 1.0347 1.4384 7.0000 0.7269 0.3252 8.0000 -0.3034 -0.7549 9.0000 0.2939 1.3703 10.0000 -0.7873 -1.7115 ] ; data(:,:,2) = … [1.0000 0.8725 0.9884 2.0000 -1.2075 -1.1471 3.0000 0.7172 -1.0689 4.0000 1.6302 -0.8095 5.0000 0.4889 -2.9443 6.0000 1.0347 1.4384 7.0000 0.7269 0.3252 8.0000 -0.3034 -0.7549 9.0000 0.2939 1.3703 10.0000 -0.7873 -1.7115 ] ; n = 1; [~,~,lenDat] = size(data); while n <= lenDat i = data(:,:,n); save("data_"+int2str(n)+".txt",'i', '-ascii') %format생략시 mat파일 형식으로 저장 n = n + 1; end load 'data_1.txt' '-ascii' 'dat01' 배열을 파일로 저장했다가 다시 불러오는 예시입니다. 파일을 보면 다음과 같습니다.
[Matlab / 매트랩] 12. 외부 데이터(파일) 불러오기와 저장하기
외부 데이터 파일을 불러와서 매트랩에 입력
매트랩에서 처리한 데이터를 다시 출력해서 저장하는
1. 데이터가 알흠답구나. load 를 쓰자.
load
load(파일명) 의 형태를
‘문자’타입입니다. 따라서 ‘ ‘ 작은 따옴표를 찍어 줬던 거죠.
sprintf의 진가가
>> sprintf(‘%d.txt’,1);
이렇게 하면 char 타입의 1.txt라는 문자가 출력됩니다
>> for i=1:10
data = load(sprintf(‘%d.txt’,i));
figure(i)
plot(data(:,1),data(:,2))
end
이렇게 for문과 sprintf를 응용하면
1.txt~10.txt 의 제목을 가진 파일 10개를 힘들이지 않고
fopen – fscanf
데이터에 주석처리가 되어 있다던지
16진수의 데이터라서 변환이 필요하다던지
fopen으로 열어준 다음, fscanf라는 것을 이용해
‘요렇게 요렇게 생겨먹은 내용을 읽겠다 ‘
‘%g’
‘%g’ = ‘숫자를 불러들이겠다
데이터를 받고 나면, 다시 또 %g 라는게 있나 관찰합니다
‘a %g %g %g %g ‘ 요렇게 형식을 지정해 주어야 데이터를 읽어 들일 수 있습니다.
반복 되는 구조가 ‘문자 a 다음에 숫자 네개의 형식’ 이므로
순서대로 6개의 데이터가 2개씩 촥촥 뒤로 붙어
주게
옆으로 눕힌 형태이므로 transpose를 취해서
fopen – fprintf
r이 아니라 w(write)
‘%g %g %g %g
‘
열 벡터의 데이터부터 차례대로 읽어들여서 txt파일에 저장하게
다시 한번 데이터를 transpose해서 저장해
공유하기 글 요소 저작자표시 비영리 변경금지
그래프를 그리고 싶은데, 데이터가 txt파일이다.붙여넣기는 너무 많고….텍스트 파일은 100개가 넘는데 일일이 어떻게 다 붙이니난 한번만이라도 햄보카고 싶은데 왜 나나꽈찌쭈는 햄보칼수가 없어에라이 매트랩 안써 이런 개같은 경우이런 식의 문제가 있었다면 이젠 그 고민 말끔하게 해결해 드리겠습니다.오늘은하는 방법과것을 해보도록 하겠습니다.라는 명령어는쓰기 딱 좋습니다.(오우 롸임이 끝내주는걸)예를들면 1.txt란 파일에 요런 데이터가 있다고 합시다:다운은 하시려면 클릭:-1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001-1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001-1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001-1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001-1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 4.239205e-005 -1.555173e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -1.555173e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.278774e+000 -1.007270e+000 1.007626e-001 -1.555173e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.278774e+000 -1.007270e+000 1.516203e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.516203e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -8.985647e-001 1.516203e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.278774e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.278774e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.485830e+000 -1.007270e+000 1.007626e-001 -3.098390e-001-1.278774e+000 -8.985647e-001 1.007626e-001 -3.098390e-001이 경우, 매트랩에서 파일이 있는 폴더를 지정해준 다음load(‘1.txt’);를 한번만 써버리면 데이터가 알아서 쫘자작 들어와주게 되죠.직접 한번 보실까요?먼저 이렇게 데이터가 있는 폴더를 지정해 주시구요.이렇게 명령어를 입력해 봅니다.>> data=load(‘1.txt’);>> plot(data(:,1),data(:,2));그 결과, data라는 이름으로 txt파일에 있던 숫자들이 저장된 것을 확인할 수 있습니다.물론 1.txt 데이터의 1열과 2열의 데이터로 그래프를 그릴 수 있는 거죠ㅋ자, 여기서 load 명령어는가집니다.이때 파일명의 ‘타입’은 뭐다?그런데, 여기서 바로 저번시간에 했던드러납니다. 1.txt를 직접 입력할 수도 있지만,sprintf 명령어를 써서 이렇게 나타낼 수도 있는거죠.. 이걸 그대로 load에 넣어 줄 수 있겠죠.>>load(sprintf(‘%.d.txt’,1));자 이런 형태인 쓸 수 있는 겁니다. 되나 확인해봅시다 :)>> data=load(sprintf(‘%d.txt’,1);>> plot(data(:,1),data(:,2));네, 역시나 되는 것을 확인 할 수 있습니다.근데 이걸 왜 했냐구요??예를들어 데이터가 1.txt, 2.txt, 3.txt 등등으로 이름이 되어 있을 때, 이 데이터를 모두 다 매트랩에 불러온다 칩시다.근데 만약에 load(파일이름 일일이 다 쳐야돼) 이건 좀 미친거죠.설마 이때까지 이래오셨다면 이제부터는 정상(?)으로 돌아오자구요sprintf를 응용해서, 숫자 부분만 이름을 솨솨삭 바꿔주면 요런 짓거리가 가능해집니다.그래프를 그려줄 수 있는 거죠.요거 아마 무지 유용하게 써먹으실 수 있을 거에요ㅎ이건 어떤 파일의, 혹은할 때 쓰이는 명령어 입니다.저의 경우는 대부분 직렬통신처리 할때 썼던것 같네요. 16->10진수 변환 용으로 말이죠.이건 어떤 파일이 있으면 그 파일을매트랩에 일정양만큼 데이터를 불러오는 구조입니다.있지만, 그만큼 사용하기 더 힘든감이 없잖아 있습니다.사용법이 좀 어려운 면이 없잖아 있어서, 코드를 한번 만들어두시고 두고두고 사용하시는게 편하지 않을까…싶네요ㅎ구조는 이런 식입니다.-> 먼저 파일을 열어 준 다음, a라는 곳에 저장합니다.-> fscanf로 파일 내용을 한줄 씩 읽어 들입니다. 이때 읽어들인 데이터는 순서대로 k에 하나하나씩 저장되는데,행렬크기를 지정하지 않으면 그냥 한줄로 주루룩 저장되게 됩니다.행렬크기를 지정하면 그 크기에 맞게 데이터가 샤샤삭 들어가게 됩니다ㅎ-> 열었던 파일 a를 다시 닫아줍니다.이 두가지 단계에서 사실 fopen이랑 fclose는 어렵지 않아요,fopen은 단순히 파일이름 써주고 뒤에 옵션으로 ‘r’만 붙여주면 되는 일이고..fclose는 열었던 파일을 걍 이름만 써주면 되니, 어려울게 하나도 없지요.하지만 요기서 까다로운 녀석이 있는데 그놈이 바로 fscanf 부분입니다.꽤나 까다로우니깐 하나하나씩 분석해볼게요.ㅎㅎa라는 건 명확하게 말하면이라고 불리는 건데요. 요건 사실은… 파일 이름이 아니라,그 파일의 상태를 나타내주는 숫자입니다.fopen이라는 명령어를 쓰게 되면, 파일 경로는 매트랩 내부에 지정이 되게 되고,a라는 것에는 파일 이름이나, 파일 경로에 대한 내용이 있는게 아니라줄 뿐입니다.요 a라는 숫자가 얼마냐에 따라 fscanf라는 명령어가 데이터를 읽을 수 있을지 없을지를 결정하거든요.실제로 보셔도 a라는 건 단순한 숫자일 뿐인걸 알 수 있습니다.네 뭐, 그냥 그렇다구요ㅋ 쓰는데 별 영향을 미치는 문제는 아닙니다이부분은 상당히 까다롭네요. 설명하기가….ㅎ흐흐흐흑 어떻게 말해야 할까..먼저 이 부분에 들어가는 것은라는 걸 의미합니다.예를들어 이부분에라고 쓴다면’%g 라고 생겨먹은 내용을 읽겠다. 라는 건데 여기서 %g는 float type의 숫자를 의미합니다.(걍 숫자라고 생각하시면 되요)그래서 다시한번 풀이하자면.’ 요런 의미가 되죠.근데 요 fprintf라는 놈이 이만약에 숫자가 또 있다면? 그 숫자를 매트랩에 넣어주는 거죠.그런데 없다면? 그냥 거기서 더이상 읽지 않고 멈추게 됩니다.예를 한번 들어 볼게요.요건 읽어들일 파일의 형식을 지정해주는 부분인데요. 파일의 내용이 만약에 이렇게 되어 있다고 합시다.a -1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001a -1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001a -1.485830e+000 -1.007270e+000 5.023739e-002 -3.098390e-001….이때 만약에됩니다.보실까요?아무것도 불러 들여지지 않습니다.이때는, 저렇게 생긴 형태를 계속해서 찾아서 읽어준다면 모든 데이터를 읽을 수 있겠죠. 단, 여기서는 %g에 해당하는 부분이 데이터로 저장됩니다.직접 한번 볼게요ㅎ네 요렇게 숫자 데이터가 저장되는 걸 확인할 수 있습니다ㅎㅎ(3) [행렬크기]위에서 보시면 아시겠지만 데이터가 주루룩 한줄로 밑으로 내려가는 걸 볼 수 있어요…이런 경우는 행렬의 크기를 지정해 주는걸로 data가 m by n 행렬형태로 표시 될 수 있습니다.예를들어 2 by 3으로 지정한다면.이렇게되는거죠.따라서 처음의 파일 형식대로 나타내기 위해서는 행렬의 크기를 이렇게 지정해주어야 합니다.data=fscanf(a,’a %g %g %g %g ‘,[4,inf])여기서나오게 됩니다.자 요경우 처음 형식의 데이터를1.txt의 형태와 같도록 만들어 줍시다(transpose는 1강을 참조하세요)data=data’이렇게 하면 파일을 불러들일 수 있게 되는거죠 완성!fclose(a)로 닫아주고, 데이터를 맘껏 이용합시다파일을 불러오는 건 했으니 이젠 저장하는 걸 해볼텐데요. fscanf를 잘 익히셨다면, fprintf는 쉽게 쓸 수 있습니다.형식은 거의 동일해요.위에서 불러온 data파일을 이용해서 2.txt를 만들어 보겠습니다.a=fopen(‘2.txt’,’w’);fprintf(a,’저장할 형태’,데이터)마찬가지로, 1),3) 은 어려울 게 없구요.저장할 형태는 숫자 네개 저장하고 한줄 띄우고 이런식으로 할테니요렇게 입력해 줍니다.문제는 여기 데이터 부분인데, 그냥 데이터를 집어 넣게 되면 fscanf에서 파일 읽은 순서와 마찬가지로됩니다. 뭔소리냐? 요렇게 저장된단 말이죠ㅠ-1.48583 -1.48583 -1.48583 -1.48583-1.48583 -1.48583 -1.48583 -1.48583-1.48583 -1.48583 -1.48583 -1.48583-1.27877 -1.48583 -1.48583 -1.48583-1.48583 -1.48583 -1.27877 -1.48583-1.48583 -1.48583 -1.48583 -1.48583-1.48583 -1.48583 -1.27877 -1.27877-1.48583 -1.27877 -1.00727 -1.00727-1.00727 -1.00727 -1.00727 -1.00727……그래서주어야 합니다. 한번 볼게요 ㅎfprintf다음에 data를 넣은것이 아니라 transpose(data)=data’ 를 넣었습니다.그 결과 2.txt가 요렇게 생기게 되는거죠.한 줄 넘어가는게 네모로 표시가 되긴 했는데… 워드패드나 엑셀 등으로 불러보면 정상적으로 표시된답니다…..ㅠ이런식으로 저장을 합니다!!!일단 이렇게 불러오기와 저장을 일단락 하고, 다음 내용에서추가적으로 uiget이란 걸 이용하여 파일 저장+불러오기를 응용해보도록 할게요ㅎ아 어지럽습니다. 어렵네요 허허허허
내가 공부한 옥타브2 19. 파일 입출력
반응형
파일 입출력을 다루는 방법에 대해서 공부하겠습니다.
save명령과 load명령을 사용해서 실습을 해보겠습니다.
m파일과는 다른 기능인데요, (m파일은 matlab script 저장 파일)
command window에 어떤 변수들을 아래와 같이 입력했습니다.
잠깐 저장을 하고 싶다면
save명령어를 사용해서 저장하면 됩니다.
save mydatafile
위와 같이 하면 저장이 됩니다.
mydatafile의 script를 직접 눈으로 볼순 없지만 Filebrower을 보니 저장이 되었음을 볼 수 있습니다.
옥타브를 껐다가 켜면 WorkSpace에 저장된 변수가 없음을 알 수 있습니다.
File Browser에는 파일이 그대로 있는 것도 볼 수 있습니다.
파일에 저장한 뒤 저장한 변수를 불러오기 위해서는 load (파일명) 변수를 사용해야 합니다.
WorkSpace를 보면 아까 ‘mydatafile’라는 파일에 저장했던 변수들이 나온 것을 볼 수 있습니다.
그런 다음 저장했던 변수를 입력하면
변수를 불러올 수 있습니다.
만약 이때 어떤 변수를 저장했는지 기억이 나지 않는다면
who명령어를 사용하면 됩니다.
다음 화면과 같이 save myfile에 save 했던 변수들이 어떤 것이 있었는지 볼 수 있습니다.
바탕화면에도 저장이 되어있는 것을 볼 수 있습니다.
그러고 나서
만약 특정한 변수만 저장하고 싶다면 save mydata x y
라고 입력해주면 됩니다.
mydate라는 이름으로 파일이 저장됩니다.
이때 변수 x, y만 저장됩니다.
창을 껐다가 켰다고 가정하기 위해 clear all을 사용해서 WorkSpace에 있는 변수들을 일단 모두 지워줍니다.
clear all 은 메모리에 있는 변수들을 다 지우는 기능을 합니다.
왼쪽의 worksapace에 변수들이 다 지워진 것을 볼 수 있습니다.
FileBrowser은 그대로입니다.
load명령을 이용해서 mydata 파일을 불러오겠습니다.
workspace에 mydata에 있는 변수들이 생긴 것을 볼 수 있습니다.
또 다른 예시로 행렬을 A라는 변수에 저장해보도록 하겠습니다.
아까처럼 매트랩 고유 형식의 데이터 파일로 저장해보겠습니다.
이번에는 눈으로 볼 수 있도록 아스키 텍스트 파일로 저장해보겠습니다.
save (파일 이름). txt A -ascii
와 같은 명령을 입력해줍니다. (A라는 행렬 뒤에 -기호를 작성할 때 한 칸 띄어줘야 합니다.)
(확장자 txt는 생략해도 상관없다고 하셨는데 저 같은 경우는 생략하니 파일이 열리지가 않았습니다.)
위 그림과 같이 FileBrowser에 확장자가 txt인 파일로 저장됨을 볼 수 있습니다.
파일을 열어보면 다음과 같이 어떤 변수들이 저장되었는지 볼 수 있습니다.
그 다음 text파일을 다시 불러서 읽습니다.
아까는 loadmyfile 라고 작성해서 파일을 부르고 저장된 값을 읽어 들였는데
지금은 매트랩 데이터 파일이 아니라 아스키 파일로 저장되어 있기 때문에
format에 맞도록 불러와서 저장해야 합니다.
파일을 불러옵니다.
불러온 파일을 그 변수를 A에 집어넣어라 라고 명령할 수 있습니다.
다른 변수에도 대입할 수 있습니다.
다음 두 명령은 같은 효과를 냅니다.
save datafile.txt A –ascii % 명령 형태
save( ‘datafile.txt’ , ’A’, ‘-ascii’ ) % 함수 호출 형태
save를 사용해서 변수를 저장하고 load를 사용해서 변수를 불러들이는 과정을 공부해보았습니다.
save와 load는 매트랩 형식으로 저장할 때 쓰이는 명령입니다.
다음으로 fprintf에 대해서 알아보겠습니다.
이 명령은 특정한 형식을 지정해서 저장하고 싶을 때 fprintf를 사용합니다.
c언어를 공부했다면 printf와 같은 기능을 하는 함수라고 생각하면 되겠습니다.
다음과 같은 형식으로 작성해주면 됩니다.
>> x=3;
>> x
x = 3
>> fprintf(“x=%d
“, x)
x=3
fprintf에서 x=이라는 글자는 그대로 찍히고 “”뒤에 있는 x가 format % d를 가지고 출력됩니다.
그림으로 그려서 설명하면 다음과 같습니다.
만약 다음과 같은 행렬에 줄 바꿈 문자를 넣어서 fprintf함수로 나타내면 다음과 같겠습니다.
x에는 값이 4개 들어있으므로 위와 같이 출력됩니다.
이번에는 벡터가 아닌 행렬을 입력, 출력해보겠습니다.
행렬A를 다음과 같이 정의해줍니다.
A=[1 2 3 4 5 6]
% d앞에 아무것도 작성하지 않고 엔터를 누르면
아래 사진과 같이
6줄을 찍게 될 것입니다.
출력되는 순서를 보니까
열을 먼저 가져오고 그 다음에 벡터를 가져온다는 사실을 알 수 있습니다.
2개씩 출력하고 줄을 바꾸고 싶다면 다음과 같은 형식으로 함수를 작성하면 되겠습니다.
다음과 같이 한 번에 두 개의 숫자를 찍게 되면 마치 행 과열을 바꾼 것처럼 나옵니다. 열을 먼저 출력하고 행을 출력하기 때문입니다.
이렇게 출력을 할 수 있는데 15과에서는 명령 창에 출력하는것이 학습목표가 아니라
파일 형식으로 출력하는 것이 중요합니다.
Data형식으로 출력할 때는 fprintf함수를 사용할 수 있는가 하는 내용이 강의노트에 있습니다.
다만 format string앞에 어떤 파일에 찍을 것인지를 나타내는 ‘파일 핸들’을 입력해주면 되겠습니다.
냉장고에 있는 음식을 먹으려면 냉장고 문을 연다.
냉장고에 음식을 집어넣는다.
냉장고 문을 닫는다.
파일을 여는 명령은 fopen
파일을 닫는 명령은 fclose
파일에 작성하는 명령은 fpritnf입니다.
A라는 행렬의 값을 만들기 전에 저장할 데이터를 만들어줍니다.
이번에 script를 만들라고 했으니 Ediotor로 가서 다음과 같이 입력해줍니다.
fid:file id의 줄임말입니다.
fprintf(fid, ”)
어디에 쓰는지 어떤 형식으로 쓰는지 (총7칸, 소수점 아래는 4자리까지 표기)
fclose(fid)
fclose()는 fid라는 핸들을 가진 파일이 닫힌다는 명령입니다.
fid가 파일의 핸들이 됩니다.
전체 코드와 실행화면입니다.
clear;clc;close all; %파일에 저장할 데이터 만들기 %예제 15a번에 대한 내용입니다. t=[0:0.01:1]; %시간 t의 범위를 0과 1사이로 잡습니다. y=cos(2*pi*t); A=[t;y] %편리하게 사용하기위해서 행렬에다가 대입해봅니다. %첫번째 행에는 t를 두번째 행에는 y를 대입합니다. fid=fopen(‘myfile1.txt’,’w’); %w는 written의 약자로,쓰기파일로 열겠다는 명령입니다. %이런 이름을 가진 파일을 출력한다음 성공하면 그 파일의 핸들,아이디를 fid라는 변수에 %반환해줍니다. fprintf(fid,”%7.4f ;%7.4f
“,A); %어디에 쓸지, 어떤 형식으로 쓸지 %7.4f > float형식으로,총7자리까지 표시하되,소수점 아래 숫자는 4자리까지 표기한다. fclose(fid)
FileBrowser에 보면 myfile1.txt라는 이름을 가진 텍스트 파일이 생성되어있음을 볼 수 있습니다.
마우스 우클릭 해서
두 번째 있는 칸인 Open in Text Editor을 클릭하면 됩니다.
또는 더블클릭해서 열어줄 수도 있습니다.
다음과 같은 화면이 나옵니다.
데이터를 저장했으니 데이터를 읽어오는 것이 필요합니다.
데이터를 읽어오려면 일단 파일을 열어야 합니다.
fid=fopen(‘myfile1.txt’,’r’)
”안에는 열고 싶은 파일이름 ‘r’ >>읽기 형식으로 열기위해서…
파일의 핸들,id는 변수fid에 저장되어있습니다.
읽어오려면fscanf(fid,)
fscanf() 함수에 대해 공부합니다.
그 파일의 핸들은 fid에 저장되어 있습니다.
% g라는 형식은 general의 약어입니다.
아무 형식으로나 읽어온다는 뜻입니다.
fid=fopen(‘myfile1.txt’, ‘r’); 읽기 형식으로 연다.
두번쨰 열에는 ; 이라는 문자하나가 저장되어있다는 것을 알고 있기 때문에 %c로 읽습니다.
% c는 character이라는 뜻 문자 하나를 읽어옵니다.
세번째열에는 숫자가 들어있으므로 형식에 상관없이 숫자를 무조건 읽어오라는 의미입니다.
두 번의 콤마를 찍은 다음 나오는
세 번째 인자는 읽어오는 범위를 나타냅니다.
[3 inf]3행부터 infinite(끝까지)라는 뜻입니다.
어디다가 저장할지에 대한 코드를 입력해보겠습니다.
fscanf앞에 A=을 작성하여 A에 대입한다는 뜻을 나타냅니다.
읽어오는 것에 대한 코드를 작성했으므로
파일을 닫아주면 됩니다.
fclose(fid)라고
작성해주면 됩니다.
전체 코드와 출력 화면입니다.
%% %파일읽어오기에 대한 코드입니다 . fid = fopen( ‘myfile1.txt’ , ‘r’ ); %read 읽기형식으로 연다. fscanf(fid, ‘%c %c %c’, [3 1]); % 첫 줄 비우기 A = fscanf(fid, ‘%g %c %g’, [3 inf]); %3행으로 끝까지 fclose(fid); A=A’; %전치행렬 3행에서 3열으로 바뀌었다. t=A(:,1); %1열에 데이터가 들어있다. y=A(:,3); %3열에 있는 데이터를 모두 y에 대입하라는 뜻 입니다. plot(t,y)
마지막 3줄을 다음과 같이 작성해도 됩니다.
%ex15b %파일읽어오기에 대한 코드입니다 . fid=fopen(‘myfile1.txt’,’r’); A=fscanf(fid,’%g %c %g’,[3 inf]); fclose(fid); t=A(1,:) y=A(3,:) plot(t,y)
데이터 출력하는 방법과
출력한 데이터를 파일로 읽어 들일 수 있게 되었습니다.
사용자가 정확히 정수를 입력한다고 가정해서
만약 음수가 들어오면 -부호를 제거하는 파일을 불러옵니다.
그런 프로그램을 짜 봅니다.
힌트
무한히 반복하므로 while(1)이라는 코드를 작성하였습니다.
둘 다 아니면 break
while루프 밖으로 빠져나가라는 뜻입니다.
입력되는 n값에 따라서 파일 이름이 바뀌도록 하였습니다.
-5를 입력하면 mydata5라는 파일에서 변수를 읽어 들입니다.
전체코드와 결과화면 입니다.
while(1) N=input(‘Enter an integer:’); if((0
키워드에 대한 정보 matlab 파일 입출력
다음은 Bing에서 matlab 파일 입출력 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 MATLAB polyfit, polyval, 파일입출력(fopen, fprintf, load)
- 동영상
- 공유
- 카메라폰
- 동영상폰
- 무료
- 올리기
MATLAB #polyfit, #polyval, #파일입출력(fopen, #fprintf, #load)
YouTube에서 matlab 파일 입출력 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 MATLAB polyfit, polyval, 파일입출력(fopen, fprintf, load) | matlab 파일 입출력, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.