2013-10-04 2 views
0

У меня есть 2 программы MatLab: prog1.m и prog2.mимпортирующие переменные из одного файла в другой среде MATLAB

я должен использовать 2-D матрицу M в обеих программах.

Я загрузил матрицу в prog1.m (вручную из файла TEXT FILE).

Мне нужно запускать обе программы ~ 100 раз (для разных матриц каждый раз). Так что теперь я побежал prog1.m 100 раз, каждый раз с разной матрицей.

Теперь очередь prog2.m, но я не хочу снова загружать матрицу вручную.

У меня есть сохраненный (100 экземпляров) prog1.m, который содержит M, который также будет использоваться в prog2.m. Есть ли способ загрузить M из prog2.m в prog1.m?

Я хочу добавить код в prog2.m, который автоматически загружает M из prog1.m. PS: Я новичок в MATLAB

+0

Вы не можете «загрузить» переменные из m-файла. Однако вы могли сохранить и загрузить свою матрицу M из матового файла. Вы должны проверить документацию на 'save' и' load' – sebastian

ответ

0

Если prog1 и prog2 еще не функционируют, перепишите их как функции. Например, первая строка в них может выглядеть следующим образом:

function [out1 out2] = prog1(M)
function out = prog2(M)

Затем написать третью функцию, которая, данное имя файла, загружает данные, вызовы prog1 и prog2 и, возможно, сохраняет данные в соответствующая форма (вы можете использовать fileparts и fullfile для автоматического создания нового файла на основе ввода - например, учитывая data101.txt, возвращение data101_proc.mat Голые кости такой функции будет вдоль этих линий:.

function M = prog3(fname) 

M = load(fname); % or whatever method is required for loading this data 

%call prog1 and prog2 
[out1 out2] = prog1(M); 
out3 = prog2(M); 

%make new filename 
[fpath,fname2,ext] = fileparts(fname); 
fname_out = fullfile(fpath, [fname2,'_out','.mat']); 

%save data - depends on what outputs are and what you need to do with them later 
save(fname_out, 'out1','out2','out3','M'); 

end 

Наконец, как уже упоминалось babaea, вы можете использовать ls или dir, составляют список файлов, которые вы хотите использовать, и создать цикл, который вызывает вышеуказанную функцию для каждого файла в свою очередь.

1

Наиболее эффективный способ сделать то, что вы хотите сделать, это прочитать непосредственно из текстового файла с помощью TextScan:

http://www.mathworks.co.uk/help/matlab/ref/textscan.html

Если форматирование в тексте файлы одинаковые, вы можете читать из одного файла за раз, выполните свой процесс, затем измените имя и запустите его снова.

Вы можете сделать процесс более автоматическим, изменив имя файла, из которого данные динамически считываются в цикле вокруг вашей основной программы. Но способ сделать это зависит от имени текстовых файлов.

Смежные вопросы