* 아래 링크에서 비계층 구조 cell로 되어 있는 경우
1. cell array 저장
data= cell(100,5);
중략
save('data_file.mat','data');
2. cell array 로드
load('data_file.mat')
(data라는 이름으로 로드 됨)
3. cell column copy
data 는 100x5 cell
이 중 n번째 column을 다른 변수로 저장하고 싶을 경우
a=data(:,n); (a는 data의 n번째 column이 저장된 100x1 cell)
* mat으로 저장하고 싶을 경우
a=[data{:,n}];
4. cell column sum
sum_value = sum([a{:}]);
혹은
sum_value = sum([data{:,5}]);
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에 접근
data{n} => 내용물에 바로 접근
data(n) => cell 형태로 return -> 다시 data access 필요
7. cell data sorting 하기
ex) 숫자로 된 2번째 column을 내림차순으로 sorting 하는 경우
[p, idx] = sort(cell2mat(data(:,2)),'descend');
8. sorting 후 상위 n개 data만 선택하여 cell 로 저장
n = 10;
data2 = data(idx(1:n),:); (2번째 column 상위 10개 index를 기준으로, 전체 column의 해당 idx 값이 복사됨)
8. cell data를 cell에 복사
data1 = cell(100,5,3);
data1(1,:,1:2) = data2(1:5,[1 3]);
% data2의 1~5번째 rows 중 1,3 column을 data1에 복사하는 경우
9. 숫자 array data를 cell에 복사
*num2cell을 이용
data1(1,:,3) = num2cell(data4(1:5));
% 숫자 array인 data4의 1~5번째 원소를 data1에 저장하는 경우
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(:,3)) >= 10
12. cell data 합치기
a : 100x5 cell
b : 200x5 cell
c = [a ; b] => 300 x 5 cell
'연구관련 > 프로그래밍' 카테고리의 다른 글
[MATLAB] 여러개의 cell, 하나로 합치기 (계층/비계층 구조 cell) (1) | 2015.08.20 |
---|---|
[MATLAB] textscan 사용 시 header 부분 혹은 특정 부분 skip하여 읽기 (0) | 2015.08.20 |
[MATLAB] figure를 이미지 파일로 저장 (0) | 2015.08.13 |
[MATLAB] 해당 element가 특정 set에 속하는지 확인 (0) | 2015.08.11 |
[MATLAB] 여러개의 cell array, single column cell로 합치기 (0) | 2015.08.11 |