一只菜鸟的MATLAB应用笔记

1. MATLAB代码程序执行超时退出

tic
tstart = tic;
while(1)
    %do something
    timeout = toc(tstart);
    if timeout > 5
        break;
    end
end

2. MATLAB可变输入参数

function [] = op_write(dev,cmd,varargin)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
if nargin <2 
    error('the function needs at least two inpus');
elseif mod(length(varargin),2) ~= 0
    error('inputs must be paired');
end

for i = 1:2:numel(varargin)
    switch lower(varargin{i})
        case 'addr'
            naddr = varargin{i+1};
            cmd(5) = naddr;
        case 'data'
            ndata = varargin{i+1};
            cmd(6) = ndata;
        otherwise 
            error([varargin{i} ' is not a valid property']);
    end
end
%do something

3. MATLAB用户定义类

classdef ClassName < SuperClassName
   properties (GetAccess = public, SetAccess = public)
      Prop1 = 'haha'
   end
   methods
      function obj = ClassName(obj,val)
         if nargin > 0
            obj.Prop = val;
         end
      end
      function fun1(obj)
      		disp('heihei')
      end
   end
end

将类定义和方法的定义保存在与该类同名的 .m 文件中,即可使用该类,使用时创建对象,访问属性,调用方法。然而,当该类中方法的定义较多并且比较复杂时,可以采用@ClassName文件夹的形式,可以把一些方法分离出来,形成单独的.m文件,保存在@ClassName中。
在这里插入图片描述
类定义文件ClassName.m

classdef ClassName < SuperClassName
   properties (GetAccess = public, SetAccess = public)
      Prop1 = 'haha'
   end
   methods
      function obj = ClassName(obj,val)
         if nargin > 0
            obj.Prop = val;
         end
      end
   end
end

方法定义文件fun1.m

function fun1(obj)
    disp('heihei')
end

4. MATLAB异常处理

4.1 try-catch执行语句并捕获产生的错误

function success = init_dev(obj,dev,varargin)
%initialize parameters

try 
    %do something
catch ME
    disp(ME);
    success = false;
end
end

4.2 error/warning(引发错误并显示消息/显示警告消息)

n = 7;
if ~ischar(n)
   error('Error. \nInput must be a char, not a %s.',class(n))
end

4.3 assert断言

num = input('Enter a Number')
assert(a > 10, 'The input number is less than 10')

5. 数字抽取滤波器

function filterOut = cic_filter(S,D)
%------------------------------------------------------------------------
Xi  = [0 S];
Xo = cumsum(Xi);

Yi = [0 Xo];
Yo = cumsum(Yi);

Zi = [0 Yo];
Zo = cumsum(Zi);

data = Zo(1:D:D*floor(length(S)/D));  %downsample 

Xi = [0,data];
Xo = diff(Xi);

Yi = [0 Xo];
Yo = diff(Yi);

Zi = [0 Yo];
Zo = diff(Zi);

filterOut = (Zo/D^3);

6. 将.m文件产生DLL

在matlab命令行输入如下命令:
在这里插入图片描述
可以看出,没有发现可以支持的编译器,可以点击提示的链接,下载相应的文件,将下载好的文件mingw.mlpkginstall拖进命令行中,等待安装完成。
再次输入同样的命令:
在这里插入图片描述
由此可见,编译环境已经安装完成。
在命令行输入deploytool,弹出对话框选择Library Compiler。
在这里插入图片描述
按照如图所示添加相应的m文件,有关DLL的名称和描述可以在Library Information中修改,同时将namespace中的class做同步修改,增加可读性。最后点击Package,完成后可以在下列路径下找到相应的DLL文件。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值