首页 > 解决方案 > 从txt文件中取出符号变量并在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);

我尝试了上面的代码,但结果没有用。你认为复制整个东西并将其用于矩阵制作的方法是什么?

标签: matlabmatrixexportfile-conversion

解决方案


无需将其读取为字符串或字符数组,然后可能会使用 evil ( eval)方法,只需将扩展名从txtto重命名为,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

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


推荐阅读