matlab绘制DNA双螺旋结构模型三维图 请高手给详细步骤。 分重要,关键是我能学会。(可以加分)
发布网友
发布时间:2022-10-15 09:59
我来回答
共2个回答
热心网友
时间:2023-10-08 19:47
步骤:
1. 从参考资料链接里下载DNA.pdb文件;
2. 把以下代码保存为drawDNA.m,并与DNA.pdf一起放到Matlab当前工作目录下;
3. 执行m文件,能得到附件所示的DNA双螺旋结构模型三维图。
=================================================================
function drawDNA(flag)
persistent lst; % the list box
if(nargin == 0)
files = dir('*.pdb');
if(isempty(files))
error('%s\n%s\n%s\n%s','There are no .pdb files in the current directory.',...
'drawpdb.m requires some files to view.',...
'Please download pdb file first:');
end
figure('Color','black')
set(gca,'Position',[0 0 0.8 1],'visible','off','DataAspectRatio',[1 1 1])
cameratoolbar;
lst = uicontrol('Units','normalized', ...
'Position',[.8, .05,.19,.9],...
'String',{files.name},'Style','listbox','Callback','drawpdb(1)');
drawpdb(1)
else
cla
light;
light('Position',[-1 -1 -2]);
[x,y,z] = sphere(40);
nm = get(lst,'String');
fid = fopen(nm{get(lst,'Value')},'r');
line = fgetl(fid);
while ischar(line)
if(strncmp('HETATM',line,6) || strncmp('ATOM',line,4))
switch(line(14))
case 'H', color = [0.7 0.7 0.7]; r = 0.6;
case 'C', color = [0.3 0.3 1.0]; r = 1.0;
case 'O', color = [0.3 1.0 0.3]; r = 1.0;
case 'N', color = [1.0 0.3 1.0]; r = 0.8;
otherwise, color = [1.0 0.0 0.0]; r = 1.0;
end
c = sscanf(line(31:54),'%f %f %f');
surface('XData',c(1) + r*x,'YData',c(2) + r*y,...
'ZData',c(3) + r*z,'FaceColor',color,...
'EdgeColor','none','FaceLighting','gouraud')
end
line = fgetl(fid);
end
fclose(fid);
end
=================================================================
[ 注: M文件的作者是Joe Hicklin,September 2001]追问哥们,这个我在网上都看到过的,行不通。请你自己弄成功一次再来。
参考资料:http://mt.seas.upenn.e/Archive/Graphics/A/gallery.html
热心网友
时间:2023-10-08 19:48
将canker的回答中的
代码
drawpdb(1)
改为
drawDNA(1)
即可,其余不变。
程序运行结果为