Lecture_PCA_RustEtal2005.key.pdf


실험 보고서.docx


principle_components_analysis.m


DATA_set1.mat


DATA_set2.mat



Dear all,


As stated today, the homework for next week is to write a matlab code to perform PCA on s(t) and r(t) variables, which were generated with a forward engineering of the general LNP model (Rust et al., 2005).


The TWO synthetic data sets are attached as “mat” files. Please download these two mat files (named “DATA_set1.mat” and “DATA_set2.mat”), each corresponding to one cell’s data.


If you load the mat file, you’ll see two structure variables:


Data.matST  = 65535 (time bins) x 16 (space bins) stimulus: white(1) vs black(-1)

Data.vectSpike = 65519 (time bins) x  1  spike train: 1(spike) vs 0(no spike)


tAxis.matST = time axis for matST (in msec)

tAxis.vectSpike = time axis for vectSpike (in sec) ==> shifted by 160 msec



What you have to do:


1. Write matlab codes to show (i) STA and (ii) linear filters (with PCA analysis)

2. Write a METHOD & RESULT paper based on 1 and Rust et al.s work



-------------------------------------


task

1.raw 데이터에서 PCA분석이 가능한 형태로 전처리한다.


Data.matST과 Data.vectSpike 를 이용하여, 1(spike)됐을 때의 16개의 자극을 캐치하고

마찬가지로 0(no spike)일때의 자극 16개를 캐치하여, spike triggered ensemble을 만든다.(16*16으로된 데이터 N개)

참고로 spike triggered ensemble 은 256*N 으로된 2차원 행열임



tAxis.matST

tAxis.vectSpike

아, 이거그냥 그냥 데이터 캐치할때 인덱스 비교하라고준 머그런거군, 16칸씩 밀려있다 뭐그런거



2.전처리된 데이터를 PCA분석(PCA를 생코딩해야할듯)해서 2개의 축을 보인다.


축은 가장 아이겐벨류가 큰 차원과, 가장 작은 차원을 의미하며 이에대해 차원 축소한 것을의미하는듯....?

PCA하기전에 코릴레이션 구한다음, 그걸 민 시프트해서 보여주기


전처리가 단순 평균빼는것이아님.

평균에대해서뭔가 정사영해서 뭐해야함.



3.PCA로 찾은 필터를 비주얼라이즈하고, 매틀랩코드와 method & result 보고서를 보낸다.


비주얼라이즈는 교수님이 보여준 방식(논문 및 강의자료 참고)으로 하는듯함..

그리고 어떻게 무엇을했는지 보고서를 작성


-------

전처리할 때, 스파이크 나온것들만 쫙 모아서 256*n 행렬만들고, 스파이크 안나온것들만 쫙모아서 또 256*m 하는거지

--> 스파이크 안나온거는 모으는거 아님.

서프레시브 필터가 그냥 아이겐 벨류가 제일낮은 아이겐벡터



그리고 DATA_set1.mat 는 simple cell 이고, DATA_set2.mat은 complex cell 인가??




각각 비교해서 1번데이터는 STA로 잘되는데 STC는 안된다 머이런것도 분석해야하는걸로 기억하는데



-------

mean 벡터를 빼주었기 때문에, 아이겐벨류는 하나가 0이나와야함





맥시멈 아이겐 벨류들의 분산을구해서 그거의 99%보다 큰 지점의 아이겐 벨류가 exitatory 필터라는거지??





------------------------------------------------ Matlab 행렬 메뉴펙처링


%1~16의 가로축(space)를 나열하고, 그다음 17부터는 time 변수가 1증가한거

----------------------

16*16 윈도우를 한칸씩 아래로 욺기면서 n*256으로 바꾼다음, 그걸 다시 vectSpike랑 비교해서 (이부분은 구현이덜됨) 1인부분만 남기고 나머지는 지움

----------------------

for data_index=1:the_number_of_data

    for time_index=1:time_number

        for space_index=1:space_number

            STE_tmp(data_index, space_index+((time_index-1)*space_number)) = Data.matST((data_index-1)+time_index, space_index);

        end

    end

end


STE=zeros(the_number_of_data,256);

for data_index=1:the_number_of_data

    if Data.vectSpike(data_index)==1

        del STE_tmp()

    end

end



----------------------

위의 코드를 압축해서 한방에 해결

----------------------


%%

STE_tmp = zeros(sum(Data.vectSpike), 256);

indices = find(Data.vectSpike == 1);

for data_index=1:length(indices)

    i = indices(data_index);

    STE_tmp(data_index,:) = reshape(Data.matST(i:(i+15), :)', 1, []);

end


-------
% reshape하는 방향은 세로를 먼저가져와서 펼침. 따라서 반대로하려면 ' 을 붙여줄것.


by 곽동현 이스텔리앙 2015.03.31 22:55
| 1 2 3 4 5 6 ··· 13 |