我有一个包含以下字符的txt文件。 theta1,l1和其他是符号变量。(不要介意)
M=[theta1 + (l1^2*m1)/4 + l1^2*m2 (l1*l2*m2*cos(fi1 - fi2))/2 ;
(l1*l2*m2*cos(fi1 - fi2))/2 theta2 + (l2^2*m2)/4 ]
我需要将其取出并使其成为一个符号矩阵。你可以看到txt文件已经很好用于制作矩阵但是我不想复制粘贴到脚本的全部内容,我宁愿自动完成。
fid = fopen('a.txt');
MMatrix=textscan(fid,'%s');
fclose(fid);
我尝试了上面的代码,但事实证明它没用。您认为复制整个事物并将其用于矩阵制作的方式是什么?
而不是将其作为字符串或字符数组读取,然后可能诉诸邪恶(eval
)方法,只需将扩展名从txt
重命名为m
,因为您已经在文本文件中以MATLAB方式定义了数组。维护备份副本如果需要,那些原始的txt文件。
如果它是单个文件(a.txt
),您可以手动或使用此代码将其重命名为a.m
:
movefile('a.txt', 'a.m');
如果目录中有多个此类文件,则可以使用以下代码更改当前目录中所有此类txt文件的扩展名:
txtfiles = dir('*.txt'); %getting all txt files in the current directory
for num = 1:numel(txtfiles)
[~, fname] = fileparts(txtfiles(num).name); %filename (without extension)
movefile(txtfiles(num).name, [fname,'.m']); %renaming
end
现在,您只需使用脚本中相应文件的名称即可获取文件中包含的任何数组。