matlab中txt文件赋值及添加路径的办法
matlab 中读取全是数字的txt文件并赋值给数组以及添加绝对路径的办法(用于uigetfile和fopen连用)
近日初学分子模拟,手上有一大堆数据,我首先想画出分子的位置,捣鼓了半天,总算搞出了一点点动静哈哈。
放出源程序
function position_plot
% input the filename and plot the 3D-position of the particles
%输入文件名并描出粒子的3D位置
disp('please choose the filename you want to plot');
[ filename,pathname]= uigetfile(' *.dat', 'choose the file you want to plot');
if pathname==0 %pathname返回0说明文件打开失败,可能是取消了,或是文件不存在等等原因
return %return用于退出整个程序
end
name =[pathname filename];
fid=fopen(name,'r');
[data,count]=fscanf(fid,'%f'); %count得到数据个数,data是列向量,用于存放所有数据
posit(count)=struct('x',[ ],'y',[ ],'z',[ ]); %构建含count个域的空结构数组
for i=1:(count/3)
posit(i).x=data(3*i-2+0);
怎么给数组赋值
posit(i).y= data(3*i-2+1);
posit(i).z= data(3*i-2+2); %循环赋值,每3个数据赋给一个域
plot3( posit(i).x, posit(i).y, posit(i).z, 'ro' );
hold on; %描一次用一次hold on,以保证每个点都描出来,否则描的永远是最后一个点
end
需要特别强调的是,fid=fopen(name,'r'); 这句fopen()函数中的"object"参数(就是name变量)是路径的时候,除非你自己输入绝对路径,否则用uigetfile()函数得到的 pathname是不包括文件名的路径例如(比相对路径能"绝对"点,暂且称为"准绝对"路径吧;至于uigetfile()函数怎么用,看看help文件吧,这里就不多说了),就像下面这样(有缩进哈)
>> disp('please choose the file you want to plot');
[ filename,pathname]= uigetfile('*.dat', 'choose the file you want to plot');
please choose the file you want to plot
>> pathname
pathname =
F:\works\MD\data\
>> filename
filename =
xyzparticle.dat
这时就要用到name =[pathname filename];这句,它用变量name存放pathnam+filename,然后再把name赋给fopen函数,问题解决。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。