鐜颁唬鏁板瓧淇″彿澶勭悊鎶ュ憡 - 鐧惧害鏂囧簱 联系客服

发布时间 : 星期日 文章鐜颁唬鏁板瓧淇″彿澶勭悊鎶ュ憡 - 鐧惧害鏂囧簱更新完毕开始阅读d3c2978d700abb68a882fb37

三. 总结

膜片钳电压信号在采集时是一个连续的交流模拟信号,不能直接被计算机处理,因此先将其分割为高密度的离散时间信号,在保证不失真的情况下,使用特定的软件进行快速处理,体现了数字信号处理灵活、准确、速度快等特点。虽然该信号的处理过程并没有涉及太多的数值计算,但在MATLAB编程过程中遇到的问题也加深了我对这门课程的理解。

在文章最后,谢谢张旭老师精彩的课程和详细的ppt,谢谢课余和我耐心讨论的同学们,你们的每一份付出都是我努力学习的动力。

附录.部分代码

1.搜索信号主函数:

function SignalSearch(Obj,handles)

%搜索信号函数

lowlim=str2double(get(handles.edit_f1,'String')); gdbase=str2double(get(handles.edit_gdbase,'String')); err=str2double(get(handles.edit_err,'String')); ishand=get(handles.checkbox_hand,'Value'); index=get(handles.datalist,'Value'); if(index<1) return end

data=Obj.DM.datas{index};

autocut=get(handles.checkbox_autocut,'Value');

[signaldata cut]=Obj.test1(data,lowlim,autocut,ishand,gdbase,err); Obj.DM.signaldatas{index}=signaldata; Obj.DM.cuts{index}=cut; return

2.搜索信号主函数中调用的test1函数,用来查找信号和降噪

function [signals num]=findsignal(data2,base,d,lowlim,start,num)%对一个数据段寻找信号的函数

data=data2(:,2);

c_signals=find(data<(base-d));%所有疑似信号点的位置的数组 if(isempty(c_signals)) signals=[]; return end

len=length(data);

signals_place=find(c_signals(2:end)-c_signals(1:end-1)>1);

d_signals=[[1;signals_place+1] [signals_place;length(c_signals)]];% 以左右两端的形式将疑似信号放入n*2数组

e_signals=c_signals(d_signals);

第5页 共7页

if(length(e_signals)==2) e_signals=e_signals'; end

f_signals=[e_signals(:,1)*2-e_signals(:,2)

e_signals(:,2)*2-e_signals(:,1)];% 检测电磁信号的范围:前后与信号长度相同的长度范围f_signals(f_signals<1)=1;

f_signals(f_signals>len)=len;%去除无效值

g_signals=[e_signals(:,1)-10 e_signals(:,2)+10];%用于寻找两端的范围 g_signals(g_signals<1)=1;

g_signals(g_signals>len)=len;%去除无效值

signals=[]; i=1;

while(i<=size(e_signals,1))

minpoint=base-min(data(e_signals(i,1):e_signals(i,2))); bdata=data(f_signals(i,1):f_signals(i,2)); maxpoint=max(bdata)-base;

if(maxpoint>minpoint)%根据是否含有电磁干扰筛选 e_signals(i,:)=[]; f_signals(i,:)=[]; g_signals(i,:)=[]; else

if(g_signals(i,2)<40||g_signals(i,1)>length(data)-40) e_signals(i,:)=[]; f_signals(i,:)=[]; g_signals(i,:)=[]; else

bddata=data(g_signals(i,1):g_signals(i,2)); diffdata=[0;diff(bddata)];

e_signals(i,1)=g_signals(i,1)-1+find(diffdata<=0.27*min(diffdata),1); temp=find(diffdata>=0.25*max(diffdata)); e_signals(i,2)=g_signals(i,1)-1+temp(end); num=num+1;

if(e_signals(i,2)

e_signals(i,2)=e_signals(i,1); e_signals(i,1)=temp; end

signals{i}=SignalAnalysis(data2,e_signals(i,:),start,num); i=i+1; end end end end

第6页 共7页

参考文献:

1. 胡广书. 数字信号处理[M]. 北京:清华大学出版社, 2003. 1-3

2. 丁克俭, 张海燕, 胡红刚, 赵红敏, 关伟军, 马月辉. 生物大分子纳米孔分析技术研究进展[C].

北京:分析化学, 2010. 280-285 3. Jacob, K, Rosenstein, Meni, Wanunu, Christopher, A, Merchant, Marija, Drndic,

Kenneth, L, Shepard. Integrated nanopore sensing platform with sub-microsecond temporal resolution[C]. New York, USA:nature methods, 2012. 487-487

第7页 共7页