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

有限元软件算下来的结果数据文件格式大概是这样子的:CFG-1-LIN-9-1.349,-67.2584,-57.0467,-1.11E+03,-9.86E-01,-8.3... 有限元软件算下来的结果数据文件格式大概是这样子的:
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的对称矩阵呢,同时也要保存前面对应的节点编号,求大神解答呀,正在论文,急求解答呀!!跪谢!!!
展开
 我来答
dukinkin
推荐于2017-12-16 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:943万
展开全部
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');
走进数理化
2015-09-30 · TA获得超过1.1万个赞
知道大有可为答主
回答量:4002
采纳率:75%
帮助的人:619万
展开全部
程序如下:

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式