从txt文件中提取符号变量并在Matlab中生成矩阵

从txt文件中提取符号变量并在Matlab中生成矩阵,matlab,matrix,export,file-conversion,Matlab,Matrix,Export,File Conversion,我有一个包含以下字符的txt文件。 θ1、l1和其他都是符号变量 我需要把它取出来,做成一个符号矩阵。正如你们所看到的,txt文件已经可以用来制作矩阵了,但我不想把整个过程复制粘贴到脚本中,我更想自动完成 fid = fopen('a.txt'); MMatrix=textscan(fid,'%s'); fclose(fid); 我尝试了上面的代码,但结果没有用。你认为复制整个东西并用它来制作矩阵的方法是什么?而不是将其作为字符串或字符数组读取,然后可能诉诸邪恶(方法,只需将扩展名从txt重命

我有一个包含以下字符的txt文件。 θ1、l1和其他都是符号变量

我需要把它取出来,做成一个符号矩阵。正如你们所看到的,txt文件已经可以用来制作矩阵了,但我不想把整个过程复制粘贴到脚本中,我更想自动完成

fid = fopen('a.txt');
MMatrix=textscan(fid,'%s');
fclose(fid);

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

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

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

亲爱的Sardar Usama,正如您所建议的,我单独创建了一个脚本文件,但坦率地说,我从未使用另一个脚本文件中脚本文件的内容。如何从其他脚本文件中使用它?为了清楚起见,我a、 m脚本文件,其中有m=[…],但我需要在脚本中编写代码时使用脚本中的内容。@如果该脚本文件位于您的路径中,您只需编写其名称即可使用其内容(即
a
)或者你也可以使用。只要确保你的变量与脚本文件没有名称冲突。也就是说,你的工作区中不应该有任何名为
a
的变量。如果你想使用
a.m
的内容亲爱的Sardar Usama,运行脚本是个好主意,但符号变量以前定义的h在新创建的脚本文件中不可识别。如何才能将文件读取为字符串并将其分配给变量?(使用前面建议的eval)不。我从来没有建议过你这样做。
eval
是最糟糕的做法。如果你正确初始化/定义了变量,就不可能无法识别它们。它们以前是在脚本中定义的,但我要运行的脚本文件是不同的脚本文件。(2个脚本文件,其中1个定义了变量,一个没有)。这就是它遇到错误的原因。
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