* 아래 링크에서 비계층 구조 cell로 되어 있는 경우

http://zacurr.tistory.com/544 


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







Posted by 우주여행가
,