基于MATLAB appdesigner计算简单的杆挠度和转角

该文章详细描述了一个Matlab程序中关于杆件力学问题的函数,包括计算单侧约束下的力和角度、杆长变化对参数的影响、以及多点约束的力和角度设置。涉及的函数如get_EI_l、set_w_theta和compute_FButtonPushed等处理了不同情况下的应力应变计算。
摘要由CSDN通过智能技术生成

界面如下

公式都来源于以下的图片

代码如下

methods (Access = private)
        
        function [EI,len] = get_EI_l(app)
            EI=app.EIEditField.Value;
            len=app.lEditField.Value;
        end
        
        function set_w_theta(app,w,theta)
            set(app.wEditField,'Value',w)
            set(app.thetaEditField,'Value',theta)
        end
        
        function set_w_theta_2(app,w,thetaA,thetaB)
            set(app.wEditField_2,'Value',w)
            set(app.thetaEditField_A,'Value',thetaA)
            set(app.thetaEditField_B,'Value',thetaB)
        end
    end
    

    % Callbacks that handle component events
    methods (Access = private)

        % 计算只有一侧约束的,只受一个力
        function compute_FButtonPushed(app, event)
            [EI,len] = get_EI_l(app);
            a=app.aEditField.Value;
            F=app.FEditField.Value;
            w=-F*a^2*(3*len-a)/(6*EI);
            theta=-F*a^2/(2*EI);
            set_w_theta(app,w,theta)
        end

        % 在杆长值改变时,自动为a,b赋值
        function lEditFieldValueChanged(app, event)
            value = app.lEditField.Value;
            app.aEditField.Value=value;
            app.aEditField_2.Value=value;
            app.aEditField_3.Value=value/2;
            app.aEditField_4.Value=value/2;
            app.bEditField.Value=value/2;
            app.bEditField_2.Value=value/2;
        end

        % Button pushed function: compute_junbu
        function compute_junbuButtonPushed(app, event)
            [EI,len] = get_EI_l(app);
            q=app.qEditField.Value;
            w=-q*len^4/(8*EI);
            theta=-q*len^3/(6*EI);
            set_w_theta(app,w,theta)
        end

        % Button pushed function: compute_liou
        function compute_liouButtonPushed(app, event)
            [EI,len] = get_EI_l(app);
            M_e=app.M_eEditField.Value;
            a=app.aEditField_2.Value;
            w=-M_e*a*(len-a/2)/EI;
            theta=-M_e*a/EI;
            set_w_theta(app,w,theta)
        end

        % Button pushed function: compute_F2
        function compute_F2ButtonPushed(app, event)
            [EI,len] = get_EI_l(app);
            F=app.FEditField_2.Value;
            a=app.aEditField_4.Value;
            b=app.bEditField_2.Value;
            w=-F*b*(len^2-a^2)^1.5/(9*sqrt(3)*len*EI);
            thetaA=-F*b*(len^2-b^2)/(6*len*EI);
            thetaB=F*a*(len^2-a^2)/(6*len*EI);
            set_w_theta_2(app,w,thetaA,thetaB)
        end

        % Button pushed function: compute_junbu2
        function compute_junbu2ButtonPushed(app, event)
            [EI,len] = get_EI_l(app);
            q=app.qEditField.Value;
            w=-5*q*len^4/(384*EI);
            thetaA=-q*len^3/(24*EI);
            thetaB=-thetaA;
            set_w_theta_2(app,w,thetaA,thetaB)
        end

        % Button pushed function: compute_liou2
        function compute_liou2ButtonPushed(app, event)
            M_e=app.M_eEditField_2.Value;
            [EI,len] = get_EI_l(app);
            a=app.aEditField_3.Value;
            b=app.bEditField.Value;
            if a+b~=len
                uialert(app.UIFigure,"a和b的和必须是l","error")
                pause
            end
            w1=M_e*(len^2-3*b^2)^1.5/(9*sqrt(3)*len*EI);
            x1=sqrt(len^2-3*b^2)/sqrt(3);
            w2=-M_e*(len^2-3*a^2)^1.5/(9*sqrt(3)*len*EI);
            x2=sqrt(len^2-3*a^2)/sqrt(3);
            thetaA=M_e*(len^2-3*b^2)/(6*len*EI);
            thetaB=M_e*(len^2-3*a^2)/(6*len*EI);
            thetaC=M_e*(len^2-3*a^2-3*b^2)/(6*len*EI);
            set(app.w1EditField,'Value',w1)
            set(app.w2EditField,'Value',w2)
            set(app.thetaEditField_A,'Value',thetaA)
            set(app.thetaEditField_B,'Value',thetaB)
            set(app.thetaEditField_C,'Value',thetaC)
            set(app.x1EditField,'Value',x1)
            set(app.x2EditField,'Value',x2)
        end

        % 为了保证a+b=杆长,但是存在一些bug
        function bEditFieldValueChanged(app, event)
            value = app.bEditField.Value;
            len=app.lEditField.Value;
            set(app.aEditField_3,'Value',len-value);
        end

        % Value changed function: aEditField_3
        function aEditField_3ValueChanged(app, event)
            value = app.aEditField_3.Value;
            len=app.lEditField.Value;
            set(app.bEditField,'Value',len-value);
        end
    end

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bhZ567

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值