MATLAB怎样把固定格式的txt文件中的数据转换成矩阵

有限元软件算下来的结果数据文件格式大概是这样子的:
CFG-1-LIN-9-1. 349 , -67.2584 , -57.0467 , -1.11E+03 , -9.86E-01 , -8.37786 , -3.08E-01
CFG-1-LIN-9-1. 350 , -64.1185 , -51.0373 , -1.10E+03 , -8.47E-01 , -8.61823 , 3.76E-01
CFG-1-LIN-9-1. 351 , -68.8095 , -48.4935 , -1.10E+03 , -8.19E-01 , -8.73401 , 1.04E-01
CFG-1-LIN-9-1. 352 , -68.0995 , -59.8481 , -1.10E+03 , 2.32E-01 , -8.40068 , 1.52E-01
CFG-1-LIN-9-1. 353 , -62.3553 , -51.4013 , -1.12E+03 , -1.13883 , -8.28742 , -5.83E-01
CFG-1-LIN-9-1. 354 , -57.9497 , -47.6874 , -1.12E+03 , -1.00543 , -7.78419 , -3.05E-01
CFG-1-LIN-9-1. 355 , -67.4599 , -47.7561 , -1.12E+03 , -9.79E-01 , -7.68952 , -3.12E-01
CFG-1-LIN-9-1. 356 , -66.6896 , -49.0984 , -1.12E+03 , -1.23917 , -8.21932 , -4.62E-01
CFG-1-LIN-9-1. 357 , -65.8791 , -56.9909 , -1.13E+03 , 1.45E-01 , -8.55825 , -6.27E-01
CFG-1-LIN-9-1. 358 , -67.2548 , -49.3607 , -1.12E+03 , -5.08E-01 , -7.32044 , -6.12E-02
每一行前面的像“CFG-1-LIN-9-1. 349”这样的是节点编号,后面的数据是需要转换成3X3对称矩阵中的S11,S22,S33,S12,S13,S23对应的数据,怎样通过matlab将每一行的数据都转换成对应的3x3的对称矩阵呢,同时也要保存前面对应的节点编号,求大神解答呀,正在论文,急求解答呀!!跪谢!!!

fid=fopen('路径\文件名','r');
A=textscan(fid,'%*s %f,%f,%f,%f,%f,%f,%f');
fclose(fid);
c=cell2mat(A);
num=size(c,2);
B=cell(num,2);
for ii =1:size(c,2)
    temp=zeros(3);
    temp([4,7,8])=c(ii,5:7);
    temp=temp+temp.';
    temp([1,5,9])=c(ii,2:4);
    B{ii,1}=c(ii,1);
    B{ii,2}=temp;
end

其中B{m,1}就是第m个节点的编号

       B{m,2}就是第m个节点的矩阵,是3x3的对称矩阵

追问

大神谢谢了,我把txt文件放到程序这个目录之后,在输入这段之后出现这个错误:
Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
这是什么情况呀,我之前完全没学过matlab,表示吃力呀~

追答

第一句改啊,把文件名写到第一个单引号里面啊
我哪知道你的文件叫什么名字,'路径\文件名'这个要你自己根据名字改的啊
fid=fopen('路径\文件名','r');

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-30
程序如下:

fid=fopen('路径\文件名','r');
A=textscan(fid,'%*s %f,%f,%f,%f,%f,%f,%f');
fclose(fid);
c=<a href="https://www.baidu.com/s?wd=cell2mat&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4nhcLnhN-nj99nH0LnjNW0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1csP1nvrH6kPWTYnH0kPjTYnW6" target="_blank" class="baidu-highlight">cell2mat</a>(A);
num=size(c,2);
B=cell(num,2);
for ii =1:size(c,2)
temp=zeros(3);
temp([4,7,8])=c(ii,5:7);
temp=temp+temp.';
temp([1,5,9])=c(ii,2:4);
B{ii,1}=c(ii,1);
B{ii,2}=temp;
end
相似回答