在进行了一段时间App Designer学习过后,我将APP设计应用到我的专业上面上来,该文章用来记录我的设计过程。

        界面采用简单的控件布局,后续主要采用回调函数对其进行控制。

程高兴
混合储能平抑风功率波动的容量配置及能量管理系统

         读取数据后可得出如下结果:

 读取数据:value=readtable("Original wind power data.xlsx");%采用readtable读取事先准备好的excel数据。

绘图命令: plot(app.UIAxes_Original1,i,value.Var1,'k-',"LineWidth",0.5);
                   plot(app.UIAxes_Original2,i,value.Var2,'k-',"LineWidth",0.5);%采用MATLAB基本绘图命令,但在APP Designer中需要先指定坐标轴,这样才能让图像显示在相应的地方。

同时还有鼠标悬浮提示box以及错误、警示、help等提示box——msgbox('这是一个画图APP','关于','Help')。

总体构建还是比较容易的,整体代码为:

 choice=questdlg('请问您要退出吗?','提示框','YES','NO','NO');
            switch choice
                case 'YES'
                    delete(app.UIFigure);
                    return
                case 'NO'
                    return
            end

%%上述为退出提示框。

%%下面的为实现滑动平均滤波的程序代码。

 value = app.Button_window_stable_power.Value;
            t=0:1:1439;
            Pn=50;%风电场装机容量
            %自适应滑动平均,满足国家并网波动限值,此典型日曲线风电场装机容量为50MW
            %利用自适应滑动平均得出并网功率
            Pwind=readtable("Original wind power data.xlsx");
            %             plot(app.UIAxes_window3,i,Pwind.Var1);
            %             plot(app.UIAxes_window4,i,Pwind.Var2);
            Pgrid=[];%存放并网功率
            w=11;%初始窗口宽度
            while(1)
                Pgrid=smooth(Pwind.Var1,w);
                a=[];%存储一分钟的功率波动
                b=[];%存储十分钟的功率波动
                j=1;
                for i=1:1440-1
                    a(i)=fluction1min(Pgrid(i),Pgrid(i+1),Pn);
                    if rem(i,10)==0
                        b(j)=fluction10min(Pgrid(i-9:i),Pn);
                        j=j+1;
                    end
                end
                if max(a)<(Pn/10) && max(b)<(Pn/3)
                    break;
                else
                    w=w+1
                end
            end
            % subplot(2,1,1);
            plot(app.UIAxes_window3,t,Pwind.Var1,'k-',t,Pgrid,'r-.',"LineWidth",0.5);
            %%
            %下一组数据滑动窗口处理
            
            W=15;%初始窗口宽度
            while(1)
                PGrid=smooth(Pwind.Var2,W);
                A=[];%存储一分钟的功率波动
                B=[];%存储十分钟的功率波动
                j=1;
                for i=1:1440-1
                    A(i)=fluction1min(PGrid(i),PGrid(i+1),Pn);
                    if rem(i,10)==0
                        B(j)=fluction10min(PGrid(i-9:i),Pn);
                        j=j+1;
                    end
                end
                if max(A)<(Pn/10) && max(B)<(Pn/3)
                    break;
                else
                    w=w+1
                end
            end
            % subplot(2,1,1);
            plot(app.UIAxes_window4,t,Pwind.Var2,'k-',t,PGrid,'r-.',"LineWidth",0.5);

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐