• h = actxserver('Word.Application');

    doc = h.Documents.Add();

    doc.SaveAs('C:\hello.doc');

    h.Quit;

  • matlab

    2009-12-10

    几乎天天用matlab写程序

    没有matlab生活简直都没法想象了

    其实matlab应该算是最成熟的script语言了

    function handle很好用,也很必要

    scripts可以套用

    structure的field可以动态创建,动态增长,这都很方便

    画图很方便

    工具箱很多,基本上不用找什么第三方类库

    一个完整,统一,简单的世界

    也许唯一的问题是效率,部署

  • pass varargin

    2009-09-24

    function a(varargin)

    end

    function b(varargin)

    a(varargin{:})  % a(varargin) 是错误的

    end

     

  • eval

    2009-09-24

    eval(['save ' output_filepath ' ceptral'])

    用于保存一个matlab变量(ceptral) 到一个特定的文件

  • 匿名函数,以及函数对象

    sqr = @(x) x.^2;

    fhandle = @functionname

    python中的lambda语句似乎就相当于matlab中的匿名函数。看来这东西在脚本语言里还挺流行的。下面是一个例子:

    fplot(@(x) a*x.^2 + b*x + c, [-25 25])

    fplot接受一个函数对象,打印这个函数的曲线。没有匿名函数似乎真的很麻烦。

    下面是另外一个例子,同时还包括嵌套函数:

    function fhandle = makeParabola(a, b, c)
    % MAKEPARABOLA returns a function handle with parabola
    % coefficients.

    fhandle = @parabola;       % @ is the function handle constructor

       function y = parabola(x)
       y = a*x.^2 + b*x + c;
       end
    end

    用的时候,相当于给定三个参数生成一个函数对象,然后使用这个函数对象进行操作,比如:

    h = makeParabola(1.3, .2, 30);

    h(25)
    ans =
      847.5000

    Java里面可以这么做:第一种方式:定义一个类Parabola,三个成员变量a, b, c。然后调用成员函数。第二种方式:对于多种函数,定义一个接口。然后让Parabola实现这个接口。对于前面的fPlot。定义一个接口为interface F{double f(double x);}。这是面向对象的方式,好处不少。就是有时没那么简洁。

  • bills = [patient.billing]
    bills =
      127.0000   28.5000  504.7000

    patient是一个结构数组,对应于c可以这么看:

    struct PatientElem {
    double billing
    } PatientElem;
    PatientElem patient[N];

    matlab中的[patient.billing]就相当于[patient[1].billing patient[2].billing ... patient[N].billing]。然后就可以做这样的操作:

    total = sum ([patient.billing]);

  • //虽然N年前就开始接触matlab,但今天才第一次好好看了一下帮助文档的编程介绍

    MATLAB automatically builds the structure as you go along.
    似乎没有必要定义什么struct的类型。似乎也无法定义。因为变量的类型在运行时是可以变化的。比如

    a.b = 1

    那么a就是个struct变量。它包含b这个成员变量。接着可以这么写:

    a.c = 2

    现在,a的成员变量又多了一项,就是c。再接着写:

    a(2).b = 3

    现在,a的类型是个结构数组。再接着写:

    a(2).d = 4

    现在,a这个数组中的结构类型有三个成员变量:b, c, d。a(1)中之前没赋值的成员变量自动定义为空。接着写:

    a(3).b.e = 5

    现在,结构类型又变化了,原先的成员变量b不再是数值型,而是一个含有成员变量e的结构类型。

    //真是有意思