数学建模社区-数学中国

标题: MATLAB程序求助 [打印本页]

作者: boyadong    时间: 2010-4-10 03:11
标题: MATLAB程序求助
我想用Matlab编写求汽车发动机悬置矩阵的固有频率和振型的计算程序,在编写后台程序时候遇到了难题,提示我总是出错。
下面是我写的计算程序
f1=[1,0,0,0,z1,-y1;0,1,0,-z1,0,x1;0,0,1,y1,-x1,0];
f2=[1,0,0,0,z2,-y2;0,1,0,-z2,0,x2;0,0,1,y2.-x2,0];
f3=[1,0,0,0,z3,-y3;0,1,0,-z3,0,x3;0,0,1,y3.-x3,0];
% die Stellungskoordinaten der Aufhaenungen
a1=[cos(u1*pi/180),-sin(u1*pi/180),0;sin(u1*pi/180),cos(u1*pi/180),0;0,0,1];
a2=[1,0,0;0,cos(v1*pi/180),-sin(v1*pi/180);0,sin(v1*pi/180),cos(v1*pi/180)];
a3=[cos(w1*pi/180),-sin(w1*pi/180),0;sin(w1*pi/180),cos(w1*pi/180),0;0,0,1];
t1=a3*a2*a1;
b1=[cos(u2*pi/180),-sin(u2*pi/180),0;sin(u2*pi/180),cos(u2*pi/180),0;0,0,1];
b2=[1,0,0;0,cos(v2*pi/180),-sin(v2*pi/180);0,sin(v2*pi/180),cos(v2*pi/180)];
b3=[cos(w2*pi/180),-sin(w2*pi/180),0;sin(w2*pi/180),cos(w2*pi/180),0;0,0,1];
t2=b3*b2*b1;
c1=[cos(u3*pi/180),-sin(u3*pi/180),0;sin(u3*pi/180),cos(u3*pi/180),0;0,0,1];
c2=[1,0,0;0,cos(v3*pi/180),-sin(v3*pi/180);0,sin(v3*pi/180),cos(v3*pi/180)];
c3=[cos(w3*pi/180),-sin(w3*pi/180),0;sin(w3*pi/180),cos(w3*pi/180),0;0,0,1];
t3=c3*c2*c1;
% die Eulerwinkel der 3 Aufhaengungen im Koordinatensystem der Torsionsachse
k1=[p1,0,0;0,q1,0;0,0,r1];
k2=[p2,0,0;0,q2,0;0,0,r2];
k3=[p3,0,0;0,q3,0;0,0,r3];
% die Steifigkeiten der Aufhaengungen in allen Richtungen
K1=f1' *t1' *k1*t1*f1;
K2=f2' *t2' *k2*t2*f2;
K3=f3' *t3' *k3*t3*f3;
K=K1+K2+K3;
% die Steifigkeitsmatrix des Systems
M=[m,0,0,0,0,0;0,m,0,0,0,0;0,0,m,0,0,0;0,0,0,Jxx,-Jxy,-Jxz;0,0,0,-Jxy,Jyy,-Jyz;0,0,0,-Jxz,-Jyz,Jzz];
% die Massenmarix des Systems
[v,d]=eig(inv(M)*K);
for i=1:6
    P(i)=a(i,i);
end
for j=1:5
    for i=j+1:6
        if P(j)>P(i)
            t=P(i);
            P(i)=P(j);
            P(j)=t;
            q=v(:,i);
            v(:,i)=v(:,j);
            v(:,j)=q
        end
    end
end

但是运行时候总提示我错误》
??? Error using ==> struct2handle
Error while evaluating uicontrol CreateFcn.
??? Error: File: D:\Matlab2\Matlab\work\Berechnen.m Line: 1070 Column: 44
Missing variable or function.

怎么回事呢
我是Matlab新手,希望大家帮我下,谢谢了
作者: hugoczx    时间: 2010-4-10 08:02
如果这个就是程序的全部的话   问题就很多!  首先连符号变量都没有定义  如果不是符号变量 那么也应该声明。  如果是符号变量  后面调用时候应该转化吧! 哎!
作者: boyadong    时间: 2010-4-10 17:47
谢谢1楼的大大提醒,我是想输入x,y,z,p,q,r,u,v,w,(1,2,3),而且要让频率从小到大排列
然后输出到STATIC TEXT上面。
我是新手,希望1楼的大大再说清楚点。
我在每个需要输入的数据的function下面加了input = str2num(get(hObject,'String'));
然后为了调取这些输入的数据用在PUSH—Button 上面
又在BUTTON 的FUNCTION下面加了
m = str2num(get(handles.Hintergrund1_EditText,'String'));
Jxx = str2num(get(handles.Hintergrund1_EditText2,'String'));
Jyy = str2num(get(handles.Hintergrund1_EditText3,'String'));
Jzz = str2num(get(handles.Hintergrund1_EditText4,'String'));
Jxy = str2num(get(handles.Hintergrund1_EditText5,'String'));
Jxz = str2num(get(handles.Hintergrund1_EditText6,'String'));
Jyz = str2num(get(handles.Hintergrund1_EditText7,'String'));
x1 = str2num(get(handles.Hintergrund6_EditText1,'String'));
y1 = str2num(get(handles.Hintergrund6_EditText2,'String'));
z1 = str2num(get(handles.Hintergrund6_EditText3,'String'));
x2 = str2num(get(handles.Hintergrund7_EditText1,'String'));
y2 = str2num(get(handles.Hintergrund7_EditText2,'String'));
z2 = str2num(get(handles.Hintergrund7_EditText3,'String'));
x3 = str2num(get(handles.Hintergrund8_EditText1,'String'));
y3 = str2num(get(handles.Hintergrund8_EditText2,'String'));
z3 = str2num(get(handles.Hintergrund8_EditText3,'String'));
p1 = str2num(get(handles.Hintergrund6_EditText4,'String'));
q1 = str2num(get(handles.Hintergrund6_EditText5,'String'));
r1 = str2num(get(handles.Hintergrund6_EditText6,'String'));
p2 = str2num(get(handles.Hintergrund7_EditText4,'String'));
q2 = str2num(get(handles.Hintergrund7_EditText5,'String'));
r2 = str2num(get(handles.Hintergrund7_EditText6,'String'));
p3 = str2num(get(handles.Hintergrund8_EditText4,'String'));
q3 = str2num(get(handles.Hintergrund8_EditText5,'String'));
r3 = str2num(get(handles.Hintergrund8_EditText6,'String'));
u1 = str2num(get(handles.Hintergrund6_EditText7,'String'));
v1 = str2num(get(handles.Hintergrund6_EditText8,'String'));
w1 = str2num(get(handles.Hintergrund6_EditText9,'String'));
u2 = str2num(get(handles.Hintergrund7_EditText7,'String'));
v2 = str2num(get(handles.Hintergrund7_EditText8,'String'));
w2 = str2num(get(handles.Hintergrund7_EditText9,'String'));
u3 = str2num(get(handles.Hintergrund8_EditText7,'String'));
v3 = str2num(get(handles.Hintergrund8_EditText8,'String'));
w3 = str2num(get(handles.Hintergrund8_EditText9,'String'));
希望各位高手来帮帮忙




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5