哪位能帮忙看看这段程序哪出问题了啊,我是真找不出来问题了,帮忙必有重谢
function varargout = youxianyuan(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@yuanxianyuan_OpeningFcn,...
'gui_OutputFcn',@yuanxianyuan_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State,varargin{:});
else
gui_mainfcn(gui_State,varargin{:});
end
%定义可编辑文本框为空及更新句柄结构:
function youxianyuan_OpeningFcn(hObject,eventdata,handles,varargin)
set(handles.t_edit,'String','');
set(handles.e_edit,'String','');
set(handles.u_edit,'String','');
set(handles.element_edit,'String','');
set(handles.node_edit,'String','');
set(handles.num_edit,'String','');
set(handles.restriction_edit,'String','');
handles.output = hObject;
guidata(hObject,handles);
%按钮shuru_pushbutton定义youxianyuan的行数和列数:
function shuru_pushbutton_Callback(hObject,eventdata,handles)
element = str2num(get(handles.element_edit,'String'));
res = str2num(get(handles.restriction_edit,'String'));
num = str2num(get(handles.num_edit,'String'));
num_elem2 = cell(element,9);
num_elem2(:,:) = {''};
num_elem3 = cell(res,2);
num_elem3(:,:) = {''};
num_elem4 = cell(num,3);
num_elem4(:,:) = {''};
set(handles.uitable2,'Data',num_elem2);
set(handles.uitable2,'ColumnEditable',true(1,9));
set(handles.uitable2,'Data',num_elem3);
set(handles.uitable2,'ColumnEditable',true(1,2));
set(handles.uitable2,'Data',num_elem4);
set(handles.uitable2,'ColumnEditable',true(1,3));
%按钮jisuanxianshi_pushbutton的代码编写:
function jisuanxianshi_pushbutton_Callback(hObject,eventdata,handles)
%计算单元刚度矩阵及整体刚度矩阵,并使计算结果分别显示到Excel:
e = str2num(get(handles.e_edit,'String'));
u = str2num(get(handles.u_edit,'String'));
t = str2num(get(handles.t_edit,'String'));
element = str2num(get(handles.element_edit,'String'));
node = str2num(get(handles.node_edit,'String'));
K = zeros(2*node,2*node);
data2 = get(handles.uitable2,'data');
for n = 1:element
i = str2num(data2{n,2});
j = str2num(data2{n,3});
m = str2num(data2{n,4});
p = str2num(data2{n,5});
a = str2num(data2{n,6});
b = str2num(data2{n,7});
c1 = 1/3*b/a+(1-u)/6*a/b;
c2 = 1/3*a/b+(1-u)/6*b/a;
d1 = (1+u)/8;
d2 = (1-3*u)/8;
e1 = -1/3*b/a+(1-u)/12*a/b;
e2 = -1/3*a/b+(1-u)/12*a/b;
f1 = -1/6*b/a+(1-u)/12*a/b;
f2 = -1/6*a/b+(1-u)/12*a/b;
g1 = 1/6*b/a+(1-u)/12*a/b;
g2 = 1/6*a/b+(1-u)/12*a/b;
k1 = [c1,d1,e1,-d2,f1,-d1,g1,d2;
d1,c2,d2,g2,-d1,f2,-d2,e2;
e1,d2,c1,-d1,g1,-d2,f1,d1;
-d2,g2,-d1,c2,d2,e2,d1,f2;
f1,-d1,g1,d2,c1,d1,c1,-d2;
-d1,f2,-d2,e2,d1,c2,d2,g2;
g1,-d2,f1,d1,c1,d2,c1,-d1;
d2,e2,d1,f2,-d2,g2,-d1,c2];
k = e*t/(1-u^2)*k1
xlswrite('刚度矩阵.xlsx',k,n)
K(2*i-1,2*i-1) = K(2*i-1,2*i-1)+k(1,1);
K(2*i-1,2*i) = K(2*i-1,2*i)+k(1,2);
K(2*i-1,2*j-1) = K(2*i-1,2*j-1)+k(1,3);
K(2*i-1,2*j) = K(2*i-1,2*j)+k(1,4);
K(2*i-1,2*m-1) = K(2*i-1,2*m-1)+k(1,5);
K(2*i-1,2*m) = K(2*i-1,2*m)+k(1,6);
K(2*i-1,2*p-1) = K(2*i-1,2*p-1)+k(1,7);
K(2*i-1,2*p) = K(2*i-1,2*p)+k(1,8);
K(2*i,2*i-1) = K(2*i,2*i-1)+k(2,1);
K(2*i,2*i) = K(2*i,2*i)+k(2,2);
K(2*i,2*j-1) = K(2*i,2*j-1)+k(2,3);
K(2*i,2*j) = K(2*i,2*j)+k(2,4);
K(2*i,2*m-1) = K(2*i,2*m-1)+k(2,5);
K(2*i,2*m) = K(2*i,2*m)+k(2,6);
K(2*i,2*p-1) = K(2*i,2*p-1)+k(2,7);
K(2*i,2*p) = K(2*i,2*p)+k(2,8);
K(2*j-1,2*i-1) = K(2*j-1,2*i-1)+k(3,1);
K(2*j-1,2*i) = K(2*j-1,2*i)+k(3,2);
K(2*j-1,2*j-1) = K(2*j-1,2*j-1)+k(3,3);
K(2*j-1,2*j) = K(2*j-1,2*j)+k(3,4);
K(2*j-1,2*m-1) = K(2*j-1,2*m-1)+k(3,5);
K(2*j-1,2*m) = K(2*j-1,2*m)+k(3,6);
K(2*j-1,2*p-1) = K(2*j-1,2*p-1)+k(3,7);
K(2*j-1,2*p) = K(2*j-1,2*p)+k(3,8);
K(2*j,2*i-1) = K(2*j,2*i-1)+k(4,1);
K(2*j,2*i) = K(2*j,2*i)+k(4,2);
K(2*j,2*j-1) = K(2*j,2*j-1)+k(4,3);
K(2*j,2*j) = K(2*j,2*j)+k(4,4);
K(2*j,2*m-1) = K(2*j,2*m-1)+k(4,5);
K(2*j,2*m) = K(2*j,2*m)+k(4,6);
K(2*j,2*p-1) = K(2*j,2*p-1)+k(4,7);
K(2*j,2*p) = K(2*j,2*p)+k(4,8);
K(2*m-1,2*i-1) = K(2*m-1,2*i-1)+k(5,1);
K(2*m-1,2*i) = K(2*m-1,2*i)+k(5,2);
K(2*m-1,2*j-1) = K(2*m-1,2*j-1)+k(5,3);
K(2*m-1,2*j) = K(2*m-1,2*j)+k(5,4);
K(2*m-1,2*m-1) = K(2*m-1,2*m-1)+k(5,5);
K(2*m-1,2*m) = K(2*m-1,2*m)+k(5,6);
K(2*m-1,2*p-1) = K(2*m-1,2*p-1)+k(5,7);
K(2*m-1,2*p) = K(2*m-1,2*p)+k(5,8);
K(2*m,2*i-1) = K(2*m,2*i-1)+k(6,1);
K(2*m,2*i) = K(2*m,2*i)+k(6,2);
K(2*m,2*j-1) = K(2*m,2*j-1)+k(6,3);
K(2*m,2*j) = K(2*m,2*j)+k(6,4);
K(2*m,2*m-1) = K(2*m,2*m-1)+k(6,5);
K(2*m,2*m) = K(2*m,2*m)+k(6,6);
K(2*m,2*p-1) = K(2*m,2*p-1)+k(6,7);
K(2*m,2*p) = K(2*m,2*p)+k(6,8);
K(2*p-1,2*i-1) = K(2*p-1,2*i-1)+k(7,1);
K(2*p-1,2*i) = K(2*p-1,2*i)+k(7,2);
K(2*p-1,2*j-1) = K(2*p-1,2*j-1)+k(7,3);
K(2*p-1,2*j) = K(2*p-1,2*j)+k(7,4);
K(2*p-1,2*m-1) = K(2*p-1,2*m-1)+k(7,5);
K(2*p-1,2*m) = K(2*p-1,2*m)+k(7,6);
K(2*p-1,2*p-1) = K(2*p-1,2*p-1)+k(7,7);
K(2*p-1,2*p) = K(2*p-1,2*p)+k(7,8);
K(2*p,2*i-1) = K(2*p,2*i-1)+k(8,1);
K(2*p,2*i) = K(2*p,2*i)+k(8,2);
K(2*p,2*j-1) = K(2*p,2*j-1)+k(8,3);
K(2*p,2*j) = K(2*p,2*j)+k(8,4);
K(2*p,2*m-1) = K(2*p,2*m-1)+k(8,5);
K(2*p,2*m) = K(2*p,2*m)+k(8,6);
K(2*p,2*p-1) = K(2*p,2*p-1)+k(8,7);
K(2*p,2*p) = K(2*p,2*p)+k(8,8);
end
K
xlswrite('刚度矩阵.xlxs',K,'整体刚度矩阵')
%计算等效结点荷载,并使计算结果显示到Excel:
data4 = get(hanldes.uitable4,'data');
num = str2num(get(handles.num_edit,'String'));
node = str2num(get(handles.node_edit,'String'));
P = zeros(2*node,1);
for n = 1:num
m = str2num(data4{n,1});
Fx = str2num(data4{n,2});
Fy = str2num(data4{n,3});
P(2*m-1,1) = P(2*m-1,1) + Fx;
P(2*m,1) = P(2*m,1) + Fy;
end
P
PN = reshape(P,2,node);
PM = PN';
xlswrite('等效结点荷载.xlsx',PM)
%引入边界条件计算结点位移,并使计算结果显示到Excel和界面:
data3 = get(handles.uitable3,'data');
res = str2num(get(handles.restriction_edit,'String'));
F = P;
D = K;
for n = 1:res
r = str2num(data3{3,1})
if str2num(data3{n,2}) == 0
D(2*r-1,:) = 0;
D(:,2*r-1) = 0;
D(2*r-1,2*r-1) = 1;
elseif str2num(data3{n,2}) == 1
D(2*r,:) = 0;
D(:,2*r) = 0;
D(2*r,2*r) = 1;
elseif str2num(data3{n,2}) == 2
D(2*r,:) = 0;
D(:,2*r) = 0;
D(2*r,2*r) = 1;
D(2*r-1,:) = 0;
D(:,2*r-1) = 0;
D(2*r-1,2*r-1) = 1;
end
end
f = D\F;
f
fN = reshape(f,2,node);
fM = fN';
xlswrite('结点位移.xlsx',fM)
fM1 = zeros(node,1)
for i = 1:node
fM1(i) = i
end
FM = horzcat(fM1,fM)
set(handles.uitable5,'data',FM)
%由单元结点位移计算单元应力,单元结点应力,并使计算结果显示到Excel和界面:
sigma3 = zeros(element,3);
for n = 1:element
a = str2num(data2{n,6});
b = str2num(data2{n,7});
c1 = 1/3*b/a+(1-u)/6*a/b;
c2 = 1/3*a/b+(1-u)/6*b/a;
d1 = (1+u)/8;
d2 = (1-3*u)/8;
e1 = -1/3*b/a+(1-u)/12*a/b;
e2 = -1/3*a/b+(1-u)/12*a/b;
f1 = -1/6*b/a-(1-u)/12*a/b;
f2 = -1/6*a/b-(1-u)/12*a/b;
g1 = 1/6*b/a-(1-u)/6*a/b;
g2 = 1/6*a/b-(1-u)/6*a/b;
k1 = [c1,d1,e1,-d2,f1,-d1,g1,d2;
d1,c2,d2,g2,-d1,f2,-d2,e2;
e1,d2,c1,-d1,g1,-d2,f1,d1;
-d2,g2,-d1,c2,d2,e2,d1,f2;
f1,-d1,g1,d2,c1,d1,e1,-d2;
-d1,f2,-d2,e2,d1,c2,d2,g2;
g1,-d2,f1,d1,e1,d2,c1,-d1;
d2,e2,d1,f2,-d2,g2,-d1,c2];
k = e*t(1-u^2)*k1;
i = str2num(data2{n,2});
j = str2num(data2{n,3});
m = str2num(data2{n,4});
p = str2num(data2{n,5});
u1 = f(2*i-1,i);
v1 = f(2*i,1);
u2 = f(2*j-1,1);
v2 = f(2*j,1);
u3 = f(2*m-1,1);
v3 = f(2*m,1);
u4 = f(3*p-1,1);
v4 = f(2*p,1);
U = [u1;v1;u2;v2;u3;v3;u4;v4];
FM = k*U;
FN = reshape(FM,2,4)
xlswrite('单元结点力.xlsx',FN',n)
b1 = [-b 0;0 -a;-a -b];
b2 = [b 0;0 -a;-a b];
b3 = [b 0;0 a;a b];
b4 = [-b 0;a 0;a -b];
B = 1/(4*a*b)*[b1 b2 b3 b4];
sigma1 = (e/(1-u^2))*[1,u,0;u,1,0;0,0,(1-u)/2]*B*U
sigma3(n,[1 2 3]) = sigma1'
a = str2num(data2{n,6});
b = str2num(data2{n,7});
Si = e/(4*a*b*(1-u^2))*[-2*b -2*u*a 2*b 0 0 0 0 2*u*a;
-2*u*b -2*a 2*u*b 0 0 0 0 2*a;
-(1-u)*a -(1-u)*b 0 (1-u)*b 0 0 (1-u)*a 0];
Sj = e/(4*a*b*(1-u^2))*[-2*b 0 2*b -2*u*b 0 2*u*a 0 0;
-2*u*b 0 2*u*b -2*a 0 2*a 0 0;
0 -(1-u)*b -(1-u)*a (1-u)*b (1-u)*a 0 0 0];
Sm = e/(2*a*b*(1-u^2))*[0 0 0 -2*u*a 2*b 2*u*a -2*b 0;
0 0 0 -2*a 2*u*b 2*a -2*u*b 0;
0 0 -(1-u)*a 0 (1-u)*a (1-u)*b 0 -(1-u)*b];
Sp = e/(2*a*b*(1-u^2))*[0 -2*u*a 0 0 2*b 0 -2*b 2*u*a;
0 -2*a 0 0 2*u*b 0 -2*u*b 2*a;
-(1-u)*a 0 0 0 0 (1-u)*b (1-u)*a -(1-u)*b]
DSi = Si*U;
DSj = Sj*U;
DSm = Sm*U;
DSp = Sp*U;
S = [DSi DSj DSm DSp]
xlswrite('结点应力.xlsx',S',n);
end
xswrite('应力矩阵.xlsx',sigma3,n)
sigma2 = zeros(element,1)
for i = 1:element
sigma2(i) = 1
end
sigma = horzcat(sigma2,sigmaa3)
set(handles.uitable6,'data',sigma)
%按钮clear_pushbutton的代码编写:
function clear_pushbutton_Callback(hObject,eventdata,handles)
set(handles.t_edit,'String','');
set(handles.e_edit,'String','');
set(handles.u_edit,'String','');
set(handles.element_edit,'String','');
set(handles.node_edit,'String','');
set(handles.num_edit,'String','');
set(handles.restriction_edit,'String','');
%按钮quit_pushbutton的代码编写:
quit_pushbutton_Callback(hObject,eventdata,handles)
Close