* 아래 링크에서 계층 구조 cell로 되어 있는 경우
* 비계층 구조 cell data access에 비해 훨씬 직관적임
1. cell array 저장
data= cell(1,3);
data{1} = cell(10,1); % 계층 구조로 cell 생성
data{2} = cell(10,1);
data{3} = cell(10,1);
중략
save('data_file.mat','data');
2. cell array 로드
load('data_file.mat')
(data라는 이름으로 로드 됨)
3. cell column copy
data 는 1x3 cell 내부에 10x1 cell 이 3개 있음
이 중 2번째 column을 다른 변수로 저장하고 싶을 경우
a=data{2}; (a는 data의 2번째 column이 저장된 10x1 cell)
* cell이 아닌 array로 저장하고 싶을 경우
a=cell2mat(data{2}); % 10x1 array
4. cell column sum
sum_value = sum([a{:}]);
혹은
sum_value=sum(cell2mat(a))
column의 값들이 모두 더해짐
5. string txt 파일을 cell로 읽기
fp=fopen('test.txt','r');
data = textscan(fp,'%s'); % string일 경우 , 숫자일 경우는 그냥 a=load('test.txt');
data = data{:}; % 이걸 안해주면 data=1x1 cell이고 안으로 들어가야 다시 string 내용이 존재
% 이걸 해주면 바로 data에 접근 가능
fclose(fp);
6. cell data에 접근
a{n} => 내용물에 바로 접근
a(n) => cell 형태로 return -> 다시 data access 필요
7. cell data sorting 하기
ex) 숫자로 된 2번째 column을 내림차순으로 sorting 하는 경우
[p, idx] = sort(cell2mat(data{2}),'descend')
혹은
[p, idx] = sort(cell2mat(a),'descend')
8. sorting 후 상위 n개 data만 선택하여 cell 로 저장
n = 3;
data2 = data{2}(idx(1:n)); 혹은 data2 = a(idx(1:n)); % 한 column만 복사
전체 column을 복사하기
data2 = {data{1}(idx(1:n)) data{2}(idx(1:n)) data{3}(idx(1:n))}
* 이 경우는 비계층 cell이 더 편함
8. cell data를 cell에 복사
a(1:3) = data{1}(1:3)
9. 숫자 array data를 cell에 복사
*num2cell을 이용
a(1:3) = num2cell([1 2 3]);
10. cell 각각의 원소에 값 복사
data{1}{1} = 1;
data{1}{2} = 'D:\images.jpg';
data{1}{3} = sum(score(1:3)) > 0;
11. logic 연산
* cell data 중 10보다 큰지 작은지 여부를 알고 싶을때 (binary로 return)
* cell2mat을 이용
score = cell2mat(data{2}) >= 5
* textscan으로
data= textscan(fp,'%s\t%s\t%f'); 이러한 형태로 읽을 경우
data{3} 은 %f 형태로 읽었기 때문에, cell이 아니라 double array로 저장됨
이 같은 경우에는 check = data{3} >=5 와 같이 직관적으로 사용 가능
'연구관련 > 프로그래밍' 카테고리의 다른 글
OpenCV 3.0 + Visual Studio 2013 으로 Compile (20) | 2015.09.18 |
---|---|
[MATLAB] 문자열 바꾸기 (replace, strrep) (0) | 2015.08.24 |
[MATLAB] 여러개의 cell, 하나로 합치기 (계층/비계층 구조 cell) (1) | 2015.08.20 |
[MATLAB] textscan 사용 시 header 부분 혹은 특정 부분 skip하여 읽기 (0) | 2015.08.20 |
[MATLAB] cell 관련 이것저것 (1) - 비계층 구조 cell (0) | 2015.08.18 |