English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MATLAB 데이터 가져오기(ImportData)

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 설치에 적용하려면 이 소프트웨어 패키지를 검색하고 설치해야 합니다.

예제1

이미지 파일을 로드하고 표시하겠습니다. 스크립트 파일을 생성하고 다음 코드를 입력하세요-

filename = 'smile.jpg';
A = importdata(filename);
image(A);

파일을 실행할 때, MATLAB은 이미지 파일을 표시합니다. 그러나, 현재 디렉토리에 저장해야 합니다.

예제2

이 예제에서는 텍스트 파일을 가져오고 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

예제3

이 예제에서는 클립보드에서 데이터를 가져오겠습니다.

다음 행을 클립보드에 복사하세요-

Mathematics is simple

스크립트 파일을 생성하고 다음 코드를 입력하세요-

A = importdata('-pastespecial')

데이터 파일을 실행할 때, 다음과 같은 결과를 표시합니다-

A = 
   'Mathematics is simple'

하위 파일 I / O

importdata 함수는 고급 함수입니다. MATLAB의 하위 파일 I/O 함수는 파일의 읽기 및 쓰기 데이터에 최대한의 통제를 허용합니다. 그러나, 이 함수들은 효과적으로 작동하기 위해 더 상세한 파일 정보가 필요합니다.

MATLAB为字节或字符级别的读写操作提供以下函数-

函数
描述
fclose

关闭一个或所有打开的文件

feof文件结尾测试
ferror

有关文件I/O错误的信息

O从文件中读取行,删除换行符
함수는 텍스트 또는 ASCII 파일에서 형식화된 데이터를 읽습니다.

从文件中读取行,保留换行符

를 사용하여 데이터를 파일에 가져오고 이 데이터를 표시합니다. 다음 단계를 따릅니다打开文件,或获取有关打开文件的信息
fprintf将数据写入文本文件
从二进制文件读取数据
frewind将文件位置指示器移动到打开文件的开头
디폴트 설정은从文本文件读取数据
MATLAB은 바이트나 문자 수준의 읽기/쓰기 작업을 위해 다음 함수를 제공합니다function
describefclose
feofftell

fseek / 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