2016-11-01 13 views
0

Итак, у меня есть скрипт файла matlab.m. Когда файл работает. Он генерирует вектор. Я хочу сохранить этот вектор и снова запустить сценарий. Как поместить цикл во весь файл сценария и создать vector_ {i}, где индекс вводит имя файла? Я бы опубликовал код, но он не будет работать без данных на моем рабочем столе.Запуск сценария Matlab много раз

[data,labels]=xlsread('C:\Users\Hilbert\Desktop\matlab\matlabdata_abe.xlsx'); 


gdp=log(data(:,1)./lagmatrix(data(:,1),1)) %GDP 
ip=log(data(:,2)./lagmatrix(data(:,2),1)) %IP 
tnx=data(:,3) %TNX 
m2=log(data(:,4)./lagmatrix(data(:,4),1)) %M2 
cpi=log(data(:,5)./lagmatrix(data(:,5),1)) %CPI 
ffed=log(data(:,6)./lagmatrix(data(:,6),1)) %FedFund 


Dgdp=gdp 
inflation=cpi 
Dm2=m2 
ffr_=ffed 


data=[Dgdp(54:length(cpi)), inflation(54:length(cpi)), Dm2(54:length(cpi)), ffr_(54:length(cpi)) ]; 

data_L1=lagmatrix(data,1) 
data_L2=lagmatrix(data,2) 
data_L3=lagmatrix(data,3) 
data_L4=lagmatrix(data,4) 
mat=[ones(1,size(data_L1',2));data_L1';data_L2';data_L3';data_L4'] 
mat=mat(:,5:end) 

X=[data';data_L1';data_L2';data_L3'] 
X=X(:,5:end) 


mat=mat'; 
X=X' 
Fhat=(inv(mat'*mat) * mat'*X)'; 

nobs=size(data,1) 
p=4 

yhat= mat*Fhat' 
yhat=yhat(:,1:4) 
data_sample=data(5:nobs,:) 
res=data_sample - yhat 

res_{loopindexnumber}=res %saves the vector and re-runs the entire cost again the idea is to bootstrap the data by running many simulations and saving the residual vector 
+0

Сделайте фиктивный код или/и данных, просто чтобы показать ядро проблемы, с которой вы сталкиваетесь, и чего вы пытаетесь достичь. – Marcin

+0

это требует данных на моем рабочем столе – jessica

ответ

-1

Сделать скрипт функцией. А затем выполните функцию в цикле, сколько раз вы хотите. Например:

function res = my_function(k) 
    % your script goes here. 
    % the function is saved in my_function.m file 
    % some calucations producing return_vector using k parmeter 

    res = return_vector 

Позже, просто запустите цикл for над функцией.

for k = 1:10 
    assignin('base', ['A_', num2str(k)], my_function(k)) 
end 
+0

hey marcin. Когда я запускаю цикл for функции, я использую ваш – jessica

+1

@jessica, если вы хотите разные векторы, вы можете вернуть их из my_function или параметризовать его, чтобы он сохранял векторы на основе индекса цикла. – Marcin

+0

для k = 1:10 assignin ('base', ['A_', num2str (k)], my_function (k)) end – jessica

2

Сделать скрипт функцией. А затем выполните функцию в цикле, сколько раз вы хотите. Например:

function res = my_function(k) 
    % your script goes here. 
    % the function is saved in my_function.m file 
    % some calucations producing return_vector using k parmeter 

    res = return_vector 

Позже, просто запустить цикл по функции и сохранять результаты в массив ячеек:

for k = 1:10 
    A{k} = my_function(k) 
end