2017-10-13 133 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.m,D.n等來訪問結構的其他部分。這裏是一個圖片: Code, Command Window, and Workspace

希望這有助於..

+0

謝謝路易斯。有一個問題,我們不能在沒有你省略的行的情況下運行代碼!因爲在這一行我們使用第二個函數,你可以在附件中找到!我們運行第一個代碼,然後在第一個代碼中調用第二個代碼MSA(D)來完成主要計算,但是在每個時間步驟中,最後我們將所有allQ allV和allR放在cell2mat的一個單元內!同樣,即使在你的方法中檢查allQ allV allR都是空陣列,而且在D結構中我們沒有我需要的參數! – SamiHa

+0

爲什麼不在你的結構中包含'allQ','allV'和'allR'?你不是在D中輸出'allQ',allV'和'allR',要麼在結構中包含這些變量,要麼直接輸出它們。對於第二種選擇,而不是: 功能d = DataT3DSVFAE 你應該有這樣的事情: 函數[d,allQ,allV,allR] = DataT3DSVFAE。如果你這樣做,你應該在工作區中看到D,allQ,allV,allR變量。 –

+0

更清楚:除了從MSA功能輸出變量之外,您還需要在DataT3DSVFAE函數中再次執行此操作,因爲MSA位於DataT3DSVFAE內部。要麼在結構中包含'allQ','allV'和'allR',要麼直接輸出它們。直接輸出它們,而不是: 函數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。但問題是我們不訪問工作區內的變量!而我不知道如何讓他們進入工作區!有什麼建議麼? – SamiHa

0

感謝大家的幫助; 但我自己找到了答案。

我寫給任何有問題的人保存變量! 現在的問題是: 變量只是在matlab命令窗口內訪問,它們不在工作區內!因此,爲了保存任何工作區內的任何變量,可以使用功能assignin! 進一步幫助你可以檢查matlab幫助:) assignin函數玩得開心!

相關問題