English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MATLAB에서 데이터를 가져오는 것은 외부 파일에서 데이터를 가져오는 것을 의미합니다. 이importdata기능은 다양한 포맷의 여러 데이터 파일을 로드할 수 있는 기능입니다. 다음은 다섯 가지 형식을 가집니다.-
순번 | 기능 설명 |
---|---|
1 | A = importdata(filename) 에서filename을 나타냅니다.파일데이터를 배열 A에 로드합니다. |
2 | A = importdata('-pastespecial') 파일 대신 시스템 클립보드에서 데이터를 로드합니다. |
3 | A = importdata(___, delimiterIn) delimiterIn을 ASCII 파일, 파일 이름 또는 클립보드 데이터의 열 구분자로 설명합니다. delimiterIn을 사용하여 위의 문법의 모든 입력 매개변수를 사용할 수 있습니다. |
4 | A = importdata(___, delimiterIn, headerlinesIn) ASCII 파일에서, 파일 이름 또는 클립보드에서 데이터를 로드하고 행headerlinesIn + 1시작하여 숫자 데이터를 읽습니다. |
5 | [A, delimiterOut, headerlinesOut] = importdata(___) 위 문법의 어떤 입력 매개변수도 사용하여 delimiterOut에 입력된 ASCII 파일에서 검출된 구분자 문자와 headerlinesOut에 입력된 헤더 행 수를 반환합니다. |
기본적으로, Octave는 이를 지원하지 않습니다.importdata()기능이 있기 때문에, 이 예제를 Octave 설치에 적용하려면 이 소프트웨어 패키지를 검색하고 설치해야 합니다.
이미지 파일을 로드하고 표시하겠습니다. 스크립트 파일을 생성하고 다음 코드를 입력하세요-
filename = 'smile.jpg'; A = importdata(filename); image(A);
파일을 실행할 때, MATLAB은 이미지 파일을 표시합니다. 그러나, 현재 디렉토리에 저장해야 합니다.
이 예제에서는 텍스트 파일을 가져오고 Delimiter와 Column Header를 지정합니다. 타이틀을 포함한 스페이스로 구분된 ASCII 파일을 생성하겠습니다.weeklydata.txt의컬럼 타이틀.
우리의 텍스트 파일 weeklydata.txt는 다음과 같이 보입니다-
SunDay MonDay TuesDay WednesDay ThursDay FriDay SaturDay 95.01 76.21 61.54 40.57 55.79 70.28 81.53 73.11 45.65 79.19 93.55 75.29 69.87 74.68 60.68 41.85 92.18 91.69 81.32 90.38 74.51 48.60 82.14 73.82 41.03 0.99 67.22 93.18 89.13 44.47 57.63 89.36 13.89 19.88 46.60
스크립트 파일을 생성하고 다음과 같은 코드를 입력합니다-
filename = 'weeklydata.txt'; delimiterIn = ' '; headerlinesIn = 1; A = importdata(filename,delimiterIn,headerlinesIn); % View data for k = [1:7] disp(A.colheaders{1, k) disp(A.data(:, k)) disp(' ') end
데이터 파일을 실행할 때, 다음과 같은 결과를 표시합니다-
SunDay 95.0100 73.1100 60.6800 48.6000 89.1300 MonDay 76.2100 45.6500 41.8500 82.1400 44.4700 TuesDay 61.5400 79.1900 92.1800 73.8200 57.6300 WednesDay 40.5700 93.5500 91.6900 41.0300 89.3600 ThursDay 55.7900 75.2900 81.3200 0.9900 13.8900 FriDay 70.2800 69.8700 90.3800 67.2200 19.8800 SaturDay 81.5300 74.6800 74.5100 93.1800 46.6000
이 예제에서는 클립보드에서 데이터를 가져오겠습니다.
다음 행을 클립보드에 복사하세요-
Mathematics is simple
스크립트 파일을 생성하고 다음 코드를 입력하세요-
A = importdata('-pastespecial')
데이터 파일을 실행할 때, 다음과 같은 결과를 표시합니다-
A = 'Mathematics is simple'
importdata 함수는 고급 함수입니다. MATLAB의 하위 파일 I/O 함수는 파일의 읽기 및 쓰기 데이터에 최대한의 통제를 허용합니다. 그러나, 이 함수들은 효과적으로 작동하기 위해 더 상세한 파일 정보가 필요합니다.
MATLAB为字节或字符级别的读写操作提供以下函数-
函数 | 描述 |
---|---|
fclose | 关闭一个或所有打开的文件 |
feof | 文件结尾测试 |
ferror | 有关文件I/O错误的信息 |
O | 从文件中读取行,删除换行符 |
함수는 텍스트 또는 ASCII 파일에서 형식화된 데이터를 읽습니다. | 从文件中读取行,保留换行符 |
를 사용하여 데이터를 파일에 가져오고 이 데이터를 표시합니다. 다음 단계를 따릅니다 | 打开文件,或获取有关打开文件的信息 |
fprintf | 将数据写入文本文件 |
와 | 从二进制文件读取数据 |
frewind | 将文件位置指示器移动到打开文件的开头 |
디폴트 설정은 | 从文本文件读取数据 |
MATLAB은 바이트나 문자 수준의 읽기/쓰기 작업을 위해 다음 함수를 제공합니다 | function |
describe | fclose |
feof | ftell |
fwrite-
디폴트 설정은을 사용하여 데이터를 입력합니다
OMATLAB은 텍스트 데이터 파일의 하위 입력을 위해 다음 기능을 제공합니다함수는 텍스트 또는 ASCII 파일에서 형식화된 데이터를 읽습니다.fgetl
와fgets
fread2012온라인 예제
우리는 작업 디렉토리에 텍스트 데이터 파일 "myfile.txt"을 저장했습니다. 이 파일은 세 달의 강우량 데이터를 저장하고 있습니다;
년의六月,七月,八月.-
myfile.txt 데이터 파일은 다섯 개의 장소의 시간, 월, 강우량의 중복 측정 집합을 포함하고 있습니다. 헤더 데이터는 월수 M를 저장하므로 M 개의 측정 집합이 있습니다. 이 파일은 다음과 같이 보입니다 Rainfall Data 3 12:00:00 June-2012 17.21 28.52 39.78 16.55 23.67 19.15 0.35 17.57 NaN 0. 12.01 17.92 28.49 17.40 17.06 11.09 9.59 9.33 Months: June, July, August31 0.23 10.46 13.17 NaN 0. 14.89 19.33 20.97 19.50 17.65 14.45 14M = 18.23 10.34 17.95 16.46 19.34 09:10:02 July-2012 12.76 16.94 14.38 11.86 16.89 20.46 23.17 NaN 0. 24.89 19.33 30.97 49.50 47.65 24.45 34M = 18.23 30.34 27.95 16.46 19.34 30.46 33.17 NaN 0. 34.89 29.33 30.97 49.50 47.65 24.45 34M = 28.67 30.34 27.95 36.46 29.34 15:03:40 August-2012 17.09 16.55 19.59 17.25 19.22 17.54 11.45 13.48 22.55 24.01 NaN 0. 21.19 25.85 25.05 27.21 26.79 24.98 12.23 16.99 18.67 17.54 11.45 13.48 22.55 24.01 NaN 0. 21.19 25.85 25.05 27.21 26.79 24.98 12.23 16.99 18.67
.00-
NaN를 사용하여 데이터를 파일에 가져오고 이 데이터를 표시합니다. 다음 단계를 따릅니다를 사용하여 파일을 열고 파일 식별자를 얻습니다.
fopen이는 파일에 있는 데이터를 설명하는 데 사용됩니다.포맷 설명자 예를 들어%s 이는 문자열을 나타냅니다.%d 이는 정수를 나타냅니다.%f
이는 실수를 나타냅니다.*파일의 텍스트 문자를 건너뛰려면, 포맷 설명에 포함시킵니다. 데이터 필드를 건너뛰려면 설명자에 별표(*)를 사용합니다.
)。-
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n' 1);
예를 들어, 헤더를 읽고 M의 단일 값을 반환하려면 다음과 같이 작성합니다디폴트 설정은를 사용하여 파일을 읽습니다.3fscanf7그룹 데이터를 갖추고 있으며, 각 번호에 맞춰 파일에서 데이터를 읽습니다. 데이터와 일치하는 내용을 찾지 못하거나 파일의 끝에 도달할 때까지 데이터를 읽습니다. 여기서는 for 루프를 사용하여5행과
이 이름의 열을 만듭니다.우리는 작업 공간에서mydata-시간의 구조로서 파일에서 읽은 데이터를 저장하는 데 사용됩니다. 이 구조는 세 필드가 있습니다., 월, and raindata배열.
스크립트 파일을 생성하고 다음과 같은 코드를 입력합니다-
filename = '/data/myfile.txt'; rows = 7; cols = 5; %파일을 엽니다 fid = fopen(filename); %파일 헤더를 읽습니다, M(월 수)를 찾습니다 M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n' 1); %각 측정 데이터 그룹을 읽습니다 for n = 1:M mydata(n).time = fscanf(fid, '%s', 1); mydata(n).month = fscanf(fid, '%s', 1); %fscanf는 배열을 열 순서로 채웁니다 %결과를 전치합니다 mydata(n).raindata = ... fscanf(fid, '%f', [rows, cols]); end for n = 1:M disp(mydata(n).time), disp(mydata(n).month) disp(mydata(n).raindata) end %파일을 닫습니다 fclose(fid);
데이터 파일을 실행할 때, 다음과 같은 결과를 표시합니다-
12:00:00 June-2012 17.2100 17.5700 11.0900 13.1700 14.4500 28.5200 NaN 9.5900 NaN 14.0000 39.7800 12.0100 9.3300 14.8900 18.2300 16.5500 17.9200 NaN 19.3300 10.3400 23.6700 28.4900 0.3100 20.9700 17.9500 19.1500 17.4000 0.2300 19.5000 16.4600 0.3500 17.0600 10.4600 17.6500 19.3400 09:10:02 July-2012 12.7600 NaN 34.0000 33.1700 24.4500 16.9400 24.8900 18.2300 NaN 34.0000 14.3800 19.3300 30.3400 34.8900 28.6700 11.8600 30.9700 27.9500 29.3300 30.3400 16.8900 49.5000 16.4600 30.9700 27.9500 20.4600 47.6500 19.3400 49.5000 36.4600 23.1700 24.4500 30.4600 47.6500 29.3400 15:03:40 August-2012 17.0900 13.4800 27.2100 11.4500 25.0500 16.5500 22.5500 26.7900 13.4800 27.2100 19.5900 24.0100 24.9800 22.5500 26.7900 17.2500 NaN 12.2300 24.0100 24.9800 19.2200 21.1900 16.9900 NaN 12.2300 17.5400 25.8500 18.6700 21.1900 16.9900 11.4500 25.0500 17.5400 25.8500 18.6700