2017-10-13 24 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

감사합니다.하지만 무슨 뜻입니까 ?? – SamiHa

답변

0

, 변수는 여부, 작업 공간에 나타납니다 주 스크립트에서 또는 명령 창에서 직접 함수를 실행합니다. 나는 다음 줄없이 명령 창에서 함수를 실행 :

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

그리고 작업 공간에 등장 D 구조를. 그런 다음 구조의 다른 부분에 액세스하기 위해 D.m, D.n 등을 입력했습니다. 여기 사진입니다 : 희망이 도움이 Code, Command Window, and Workspace

는 ..

+0

루이스 고마워요. 우리가 생략 한 줄없이 코드를 실행할 수 없다는 문제가 있습니다! 이 줄에서는 첨부 파일에서 찾을 수있는 두 번째 함수를 사용하기 때문입니다! 첫 번째 코드를 실행 한 후 두 번째 코드 인 MSA (D)가 주 계산을 수행하기 위해 호출되지만 첫 번째 코드를 실행할 때마다 각 all 단계와 마지막에 all allV와 allR을 cell2mat에 의해 하나의 셀 안에 넣습니다!또한 당신의 메소드에서 allQ allV allR이 모두 빈 배열이고 또한 D 구조 안에 있음을 확인하면 필요한 매개 변수가 없습니다! – SamiHa

+0

구조체에 'allQ', 'allV'및 'allR'을 포함시키지 않는 이유는 무엇입니까? D에서 'allQ', allV '및'allR '을 출력하지 않습니다.이 변수를 struc에 포함하거나 직접 출력 할 수 있습니다. 대신 두 번째 선택의 경우 : 기능 [D, allQ, allV, allR] = DataT3DSVFAE : 기능 D = DataT3DSVFAE 이 뭔가를해야한다. 이렇게하면 작업 영역에 D, allQ, allV, allR 변수가 표시됩니다. –

+0

더 명확하게 : MSA 함수에서 변수를 출력하는 것 외에도 MSA는 DataT3DSVFAE 내부에 있으므로 DataT3DSVFAE 함수에서 다시해야합니다. 귀하의 struc에 'allQ', 'allV'및 'allR'을 포함 시키거나 직접 출력하십시오. 직접 출력하려면 다음을 입력하십시오. function D = DataT3DSVFAE function [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. 그러나 문제는 우리가 작업 공간 안의 변수에 접근하지 못한다는 것입니다! 그리고 나는 그 (것)들을 workspace의 내부에있게하는 방법을 모른다! 어떤 제안? – SamiHa

0

감사합니다; 그러나 나는 그 답을 찾았다.

나는 변수를 저장에 문제가있는 사람을 위해 쓰기! 질문 : 변수는 그냥 MATLAB의 명령 창 내부에 액세스하고 있었고 그들은 작업 공간 안에 있지 않았습니다! 따라서 어떤 작업 공간이라도 변수를 저장하려면 assignin 함수를 사용할 수 있습니다! matlab 도움말 내의 assignin 함수를 확인하는 데 도움이됩니다. 재미 있습니다!