有限元Matlab的GUI设计

哪位能帮忙看看这段程序哪出问题了啊,我是真找不出来问题了,帮忙必有重谢

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