如何将变量保存到工作区或文件中?

时间:2017-10-13 16:22:52

标签: matlab file variables save workspace

我是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)的名称运行另一个代码作为函数。

问题是我可以在工作区或文件或任何变量中输出。它们只出现在我的命令窗口内,我无法将它们用于我的进一步开发。 我需要在文件或工作中使用这些变量:

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

任何有用的帮助:)

3 个答案:

答案 0 :(得分: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

希望这会有所帮助..

答案 1 :(得分: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)

答案 2 :(得分:0)

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

我为任何在保存变量方面遇到问题的人写它! 问题是: 变量只是在matlab的命令窗口内访问,它们不在工作区内!因此,为了保存任何工作空间内的任何变量,可以使用 assignin 功能! 进一步帮助你检查matlab帮助中的assignin功能:)玩得开心!