Извлечение символьных переменных из txt файла и создание матрицы в Matlab - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть текстовый файл, содержащий следующие символы.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);

Я попробовал код выше, ноэто оказывается бесполезным.Как вы думаете, как скопировать все это и использовать его для изготовления матриц?

1 Ответ

0 голосов
/ 17 февраля 2019

Вместо того, чтобы читать это как строку или массив символов, а затем, возможно, прибегнуть к злому (eval) методу, просто переименуйте расширение с txt на m, так как у вас уже естьмассивы, определенные способом MATLAB в текстовых файлах.Сохраните резервную копию этих исходных текстовых файлов, если необходимо.

Если это один файл (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

Теперь вы можете просто использовать имясоответствующий файл в вашем скрипте, чтобы получить все массивы, которые есть в этом файле.

...