2016-11-01 4 views
0

So habe ich ein Matlab.m-Dateiskript. Wenn die Datei ausgeführt wird. Es erzeugt einen Vektor. Ich möchte diesen Vektor speichern und das Skript erneut ausführen. Wie lege ich eine Schleife auf die gesamte Skriptdatei und erzeuge ein vector_ {i}, wobei der Index den Namen der Datei eingibt? Ich würde den Code posten, aber es funktioniert nicht ohne die Daten auf meinem Desktop.Laufendes Matlab-Skript viele Male

[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

Stellen einen Dummy-Code oder/und Daten, nur um den Kern zu zeigen, von dem Problem, das du hast und was du erreichen willst. – Marcin

+0

es erfordert Daten auf meinem Desktop – jessica

Antwort

-1

Machen Sie das Skript zu einer Funktion. Und dann führe die Funktion in einer Schleife aus, wie oft du willst. Zum Beispiel:

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 

Später, führen Sie einfach eine for-Schleife über die Funktion.

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

hey marcin. Wenn ich die for-Schleife für die Funktion verwende, verwende ich Ihre – jessica

+1

@jessica, wenn Sie verschiedene Vektoren wollen, können Sie sie von der my_function zurückgeben oder parametrisieren, so dass die Vektoren basierend auf dem Schleifenindex gespeichert werden. – Marcin

+0

für k = 1:10 assignin ('base', ['A_', num2str (k)], meine_funktion (k)) ende – jessica

2

Machen Sie das Skript zu einer Funktion. Und dann führe die Funktion in einer Schleife aus, wie oft du willst. Zum Beispiel:

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 

Später, laufen nur eine for-Schleife, die Funktion und die Ergebnisse an eine Zellenanordnung:

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