从 txt 文件中取出符号变量并在 Matlab 中制作矩阵

Taking symbolic variables out of txt file and making a matrix in Matlab

我有一个包含以下字符的 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

现在您可以简单地在脚本中使用相应文件的名称来获取该文件中包含的任何数组。