优化算法matlab实现(一)相关matlab基础

之前实现优化算法用的java、python、c++,matlab使用较少,接下来会用matlab来实现。此处记录了一些matlab中常用的函数和需要注意的地方。
Matlab版本2015b

1.向量

Matlab的名称就是矩阵实验室,其中大多数运算都是矩阵运算。不过,优化算法中,向量用的更多。矩阵中m*n的矩阵表示m行n列的矩阵,向量可以认为是1行n列的矩阵。
  下面介绍如何初始化向量。

函数 定义
zeros(m,n) 生成一个m行n列,所有元素都为0的矩阵。
ones(m,n) 生成一个m行n列,所有元素都为1的矩阵。

(1).生成一个5维向量,每一维都是0

A = zeros(1,5);

(2).生存一个5维向量,每一维都是1

 A = ones(1,5);

2.随机数

函数 定义
rand 返回一个在区间 (0,1) 内均匀分布的随机数。
rand(n) 返回一个 n×n 的随机数矩阵,其中每个值为区间 (0,1) 内均匀分布的随机数。
rand(m,n) 返回一个 m×n 的随机数矩阵,其中每个值为区间 (0,1) 内均匀分布的随机数。
unidrnd(a) 返回一个在区间 [1,a] 内均匀分布的随机整数。
unidrnd(a,n) 返回一个 n×n 的随机数矩阵,其中每个值为区间 [1,a] 内均匀分布的随机整数。
unidrnd(a,m,n) 返回一个 m×n 的随机数矩阵,其中每个值为区间 [1,a] 内均匀分布的随机整数。
unifrnd(a,b) 返回一个在区间 (a,b) 内均匀分布的随机浮点数。
unifrnd(a,b,n) 返回一个 n×n 的随机数矩阵,其中每个值为区间 (a,b) 内均匀分布的随机浮点数。
unifrnd(a,b,m,n) 返回一个 m×n 的随机数矩阵,其中每个值为区间 (a,b) 内均匀分布的随机浮点数。
randperm(s) 返回一个 1-s 的乱序整数序列。
randperm(s,n) 返回一个 1-s 的乱序整数序列中的n个数,有重复值。
normrnd(mu,sigma) 从均值参数为 mu 和标准差参数为 sigma 的正态分布中生成随机数。
normrnd(mu,sigma,n) 返回一个 n×n 的随机数矩阵, 其中每个值从均值参数为 mu 和标准差参数为 sigma 的正态分布中生成随机数。
normrnd(mu,sigma,m ,n) 返回一个 m×n 的随机数矩阵, 其中每个值从均值参数为 mu 和标准差参数为 sigma 的正态分布中生成随机数。

(1)生成一个(0,10)内的均匀随机数

A = 10*rand;

(2)生成一个4维向量,每一维为(2,5)内的均匀随机数

A = rand(1,4)*(5-2)+2;
B = unifrnd(2,5,1,4);

(3)从1-10中随机选择一个整数

A = unidrnd(10);
取A(1)
B = randperm(10,1);

(4) 从1-10中随机选择2个不重复的整数

A = randperm(s);
取A(1),A(2)

3.运算符号

符号 含义
+- 向量的加减法,需要向量维度相同。
* 向量乘法,得到一个值或一个向量。
.* 向量点乘,得到一个向量。
^ 数值的幂。
.^ 向量中每个数值的幂。
: 表示该维度的间隔值或所有值。
向量转置
>< 大于,小于,向量之间比较需要维度一致,同时返回向量.
A=[1,2,3];
B=[4,5,6];
A+B=[5,7,9]
A*2=[2,4,6]
A*B’=1*4+2*5+3*6=32
A.*B=[4,10,18]
A.^2=[1,4,9]
C=1:10=[1,2,3,4,5,6,7,8,9,10]
D=1:2:10=[1,3,5,7,9]
A>[2,2,2]=[0,0,1]
B

4.循环

matlab中的循环从1开始。
matlab中的循环从1开始。
matlab中的循环从1开始。

% 从1取到10
for i = 1:10
end

i=1;
while i<=10
    i=i+1;
end

5.类

定义一个类A,文件A.m

classdef A

    %属性,公开的
    properties
    end

    %属性,私有的
    properties (Access = private)
    end

    %属性,受保护的,继承用
    properties (Access = protected)
        a;
    end

    %方法,公开的
    methods
    end

    %方法,私有的
    methods(Access = private)
    end

    %方法,受保护的,继承用
    methods(Access = protected)
        % 构造函数
        function self = A (a)
            self.a =a;
        end

        %方法,打印a的值
        function print(self)
            disp(self.a)
        end
    end
end

定义一个类B,继承A,覆盖print方法。文件B.m

classdef B < A

    %属性,公开的
    properties
    end

    %属性,私有的
    properties (Access = private)
    end

    %属性,受保护的,继承用
    properties (Access = protected)
        b;
    end

    %方法,公开的
    methods
        % 构造函数
        function self = B (a)
            %调用父类构造函数
            self@A(a)
            self.b =a*a;
        end
    end

    %方法,私有的
    methods(Access = private)
    end
    %方法,受保护的,继承用
    methods(Access = protected)
        %方法,打印a的值
        function print(self)
            disp(self.b)
        end
    end
end

打印类A中的a,打印类B中的b。文件Test.m

a=2;
class_a = A(a);
class_a.print();

class_b = B(a);
class_b.print();

你可能感兴趣的:(优化算法matlab实现(一)相关matlab基础)