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

问题描述 投票:0回答:1

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

我尝试了上面的代码,但事实证明它没用。您认为复制整个事物并将其用于矩阵制作的方式是什么?

matlab matrix export file-conversion
1个回答
1
投票

而不是将其作为字符串或字符数组读取,然后可能诉诸邪恶(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

现在,您只需使用脚本中相应文件的名称即可获取文件中包含的任何数组。

© www.soinside.com 2019 - 2024. All rights reserved.