2017-10-13 11 views
0

私はMATLABで新しく、別のコードを実行するコードを持っています。変数をワークスペースまたはファイルに保存する方法は?

function D=DataT3DSVFAE 
%m number of elements 
%n number of nodes 
m=94; 
n=38; 
%coordinates of nodes [(X Y Z) for each node] 
Coord=[-299.1 200 1875; 25.8 200 1875; 
425.8 200 1875; 425.8 -200 1875; 
25.8 -200 1875; -299.1 -200 1875; 
-327.9 251.7 1450; 25.8 251.7 1450; 
425.8 251.7 1450; 425.8 -251.7 1450; 
25.8 -251.7 1450; -327.9 -251.7 1450; 
-356.6 303.4 1025; 25.8 303.4 1025; 
425.8 303.4 1025; 425.8 -303.4 1025; 
25.8 -303.4 1025; -356.6 -303.4 1025; 
-390.4 364.2 525; 25.8 364.2 525; 
425.8 364.2 525; 425.8 0 525; 
425.8 -364.2 525; 25.8 -364.2 525; 
-390.4 -364.2 525; -390.4 0 525; 
-425.8 423.9 25; 25.8 423.9 25; 
425.8 423.9 25; 425.8 0 25; 
425.8 -423.9 25; 25.8 -423.9 25; 
-425.8 -423.9 25; -425.8 0 25; 
-425.8 423.9 0; 425.8 423.9 0; 
425.8 -423.9 0; -425.8 -423.9 0]; 
%conection of the nodes [first in coordinates is the first node and ...] 
Con=[1 2; 2 3; 4 5; 5 6; 3 4; 1 6; 2 5; 1 12; 6 7; 3 10; 4 9; 1 8; 2 8; 3 
8;6 11; 5 11; 4 11; 1 7; 3 9; 4 10; 6 12; 7 8; 8 9; 10 11; 11 12; 7 12;... 
9 10; 8 11; 8 10; 7 18; 12 13; 9 16; 10 15; 8 13; 8 15; 10 17; 12 17; 7 
13;9 15; 10 16; 12 18; 13 14; 14 15; 16 17; 17 18; 15 16; 13 18; 14 17; 14 
16;13 26; 18 26; 15 22; 16 22; 13 20; 14 20; 15 20; 16 24; 17 24; 18 24; 13 
19;15 21; 16 23; 18 25; 19 20; 20 21; 23 24; 24 25; 21 22; 22 23;... 
19 26; 25 26; 22 24; 20 26; 20 24; 26 27; 26 33; 26 34; 22 30; 22 29;... 
22 31; 20 29; 20 27; 20 28; 24 32; 24 31; 24 33; 19 27; 21 29; 23 31;... 
25 33; 27 35; 29 36; 31 37; 33]; 
% Create storage for Q, V and R 
allQ = cell(2,1); 
allV = cell(2,1); 
allR = cell(2,1); 
% Load has only a Fx and all other forces and moments are zero 
% uniform loads in local coordinate system 
w=zeros(m,3); 
% E: material elastic modules G:shear elastic modules J:torsional constant 
E=ones(1,m)*1e4;nu=0.3;G=E/(2*(1+nu)); 
% A:cross sectional area and Iy Iz: moment of inertia 
A=ones(1,m)*0.5;Iz=ones(1,m);Iy=ones(1,m);J=ones(1,m); 
%St: settlement of supports & displacements of free nodes 
St=zeros(n,6); be=zeros(1,m); 
% All of the variables are transposed and stored in a structure array in 
the 
%name of D 
D=struct('m',m,'n',n,'Coord',Coord','Con',Con','Re',Re',... 
'Load',Load','w',w','E',E','G',G','A',A','Iz',Iz','Iy',... 
Iy','J',J','St',St','be',be'); 

[allQ{t},allV{t},allR{t}]=MSA(D); % Save the results 

このコードはMSA(D)の名前で別のコードを実行する機能として: ここで第二のコードを実行する最初のコードです。

問題は、ワークスペース内またはファイル内または任意の変数内に出力を持つことができることです。彼らはちょうど私のコマンドウィンドウの中に現れ、私はそれを私の次の開発に使うことはできません。 私は、ファイルまたはworksapce内部にこれらの変数を必要とする:

allQ = cell2mat(allQ) 
allV = cell2mat(allV) 
allR = cell2mat(allR) 

がどれ感謝役立ちます:)

+0

「DataT3DSVFAE」の出力にするのはなぜでしょうか? – excaza

+0

行をセミコロン ';'で終わらせて、画面上の印刷を抑止します。また、ファイルに保存する場合は、関数 'save'についても読んでください。 –

+0

おかげでexcazaが、あなたは何を意味するのですか? – SamiHa

答えて

0

をデフォルトでは、彼らは関数の出力であれば、変数が唯一のかどうか、ワークスペースに表示されますメインスクリプトから、またはコマンドウィンドウから直接関数を実行します。

[allQ{t},allV{t},allR{t}]=MSA(D); % Save the results for Q, V and R 

、ワークスペースに登場D構造:私は次の行せずにコマンドウィンドウで機能を実行しました。次に、構造の他の部分にアクセスするためにD.mD.nなどをタイプしました。ここでの画像です: Code, Command Window, and Workspace

うまくいけば、このことができます。..

+0

ありがとう、ルイス。あなたが省略した行なしでコードを実行することはできないという問題があります。この行では、添付ファイルにある2番目の関数を使用しているためです。最初のコードを実行し、2番目のコードMSA(D)がメイン計算を行うために呼び出されますが、各時間ステップで、最後にallQ allVとallRをcell2matによって1つのセルに入れます!また、あなたのメソッドでもallQ allV allRはすべて空の配列であり、D構造内にも私が必要とするパラメータはありません! – SamiHa

+0

あなたのstrucに 'allQ'、 'allV'、 'allR'を含めないのはなぜですか? Dでは、 'allQ'、allV '、' allR 'を出力していません。これらの変数をstrucに含めるか、直接出力します。 2番目の選択肢のために、代わりの: 関数[D、allQ、allV、allR] = DataT3DSVFAE: 関数D = DataT3DSVFAE あなたはこのような何かを持っている必要があります。これを行うと、D、allQ、allV、allR変数がワークスペースに表示されます。 –

+0

もっと明確に:MSA関数から変数を出力するだけでなく、MSAはDataT3DSVFAEの内部にあるため、DataT3DSVFAE関数で変数を再度実行する必要があります。あなたのstrucに 'allQ'、 'allV'、 'allR'を含めるか、直接出力してください。それらを直接出力するには、 function D = DataT3DSVFAE のようにする必要があります。 関数[D、allQ、allV、allR] = DataT3DSVFAE。これを行うと、D、allQ、allV、allR変数がワークスペースに表示されます。 –

0

あなたが将来のために保存したいMATLABでのいくつかの変数を持っている場合はこれを行うには二つの方法があります。

save('workspace1.mat')  % Will save all variables 
save('workspace2.mat',X,Y,Z) % Will save the variables X, Y, Z 

は、

load('workspace1.mat')  % Loads the saved variables 

さらに複雑なものについては、ドキュメントを参照してください。アドバイス(link)

+0

ありがとうxrr。しかし問題は、ワークスペース内の変数にアクセスできないことです!そして私は彼らを仕事場の中にする方法を知らない!助言がありますか? – SamiHa

0

ありがとうございましたeveryones help; しかし私は答えを見つけました。

変数の保存に問題がある人は誰でも書き込みできます。 質問は: 変数はちょうどMATLABのコマンドウィンドウの内部にアクセスしていて、それらはワークスペースの中にいませんでした!したがって、任意の変数を任意のワークスペース内に保存するには、関数assigninを使用することができます。 matlabのヘルプの中でassignin関数をチェックすることができます。

関連する問題