楼主: ghjktdf
1330 5

[学习分享] Matlab 量化投资教程——基础篇 [推广有奖]

  • 1关注
  • 1粉丝

硕士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
166 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
1340 点
帖子
225
精华
0
在线时间
39 小时
注册时间
2017-2-16
最后登录
2017-6-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
1. 简单数据类型

1.1 实数和虚数

实数直接用数字表示。
可用类型: uint64/double/single/int8/int16/int32/int64/unit8/uint16/uint32

类型之间直接转换

  •     int32(1.1)

判断是否为某种类型

  •     isa(temp,'double')

虚数的表示如 赋值2i给a 就是

  •     >> a = 2i;

  •     >> a = 2j;

单个数字的共轭加‘

  •     >> b = a';

查找相关方法:

  •     >> methods('int32');
  •     >> methods(11);

注意:

  • i或j前面直接加数字表示虚数,但是i和j前面不加数字也可以用来表示其他变量。虚数表达不需要加*
  • isa(variable,type)判断某个变量是否为某种类型
  • methods(’int32’).查找某种数据类型的所有可调用的函数。注意直接写类型名字的时候要加引号,或者直接改为某种类型下的一个实例。

1.2 向量(数组)

一维数值数组。MATLAB 允许你创建列向量和行向量,列向量通过在方括号[]内把数值用分号(行向量用逗号或空格)隔开来创建,对元素的个数没有限制。

列向量

  •     >> a = [2; 1; 4];

行向量

  •     >> a = [2, 1, 4];

数量乘法: 把一个向量的每个元素乘上一一个数。
方法:直接在[]外面乘上一个数,或变量直接乘上一个数。

  •     >> new_vector = vector*const;

转置:

  •     >> new_vector = transpose(vector);

共轭转置:用’表示(如果向量元素均为实数,共轭转置和transpose的效果一样)

  •     >> new_vector = vector‘;

共轭不转置:conj

  •     >> new_vector = conj(vector);

向量加减: 只有相同长度的行之间或列之间可以加减。行和列之间不能直接加减(可转置后操作)。

  •     >> new_vector = vector1 - vector2;

向量元素乘除: 同上要求,但需要在运算符号前加.

  •     >> new_vector = vector1 .* vector2;

向量平方等:

  •     >> new_vector = vector1.^2;

向量点乘:dot

  •     >> new_vector  = dot( vector1,vector2);

等差序列:

(1) 从1开始每隔.1生成一个元素,元素的最大值为2

  •     >> new_vector = [1:.1:2];

(2) 从1开始到2输出10个等差序列,使得最小值为1,最大值为2

  •     >> new_vector = linspace(1,2,10);

(3) 对数值从1开始到2输出10个对数值等差序列,使得最小对数值为1,最大对数值为2

  •     >> new_vector = logspace(1,2,10);
  •     或者
  •     >> new_vector = 10.^(linspace(1,2,10));

注意:

  • Matlab识别中英文输入法,分号等需要在英文输入法下键入,否则报错。
  • 每个执行命令后面加入分号的目的是不输出结果。如果不写分号,在每次执行命令之后会把执行结果在执行界面显示。

字数超过限制了,查看原文:https://www.digquant.com.cn/forum.php?mod=viewthread&tid=160


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB matla atlab 量化投资 Mat

已有 1 人评分经验 论坛币 热心指数 收起 理由
lixuewei3 + 100 + 20 + 1 对论坛有贡献

总评分: 经验 + 100  论坛币 + 20  热心指数 + 1   查看全部评分

沙发
lixuewei3 发表于 2017-6-16 09:23:24 |只看作者 |坛友微信交流群
字数很多的话,可以在下面回复中继续添加

使用道具

藤椅
ghjktdf 发表于 2017-6-16 10:42:11 |只看作者 |坛友微信交流群
1.3 特殊数组

    a = zeros(3,4) %3行4列
    b = zeros(4) %只有一个参数时,生成二维数组
    c = zeros(4,1)
    d = zeros(3,4,5); %多维数组
    a = ones(2) %全 1
    b = eye(2) %对角 1
    c = rand(2) % [0,1] 均匀分布随机数
    d = randn(2) %正态分布随机数
    e = false(2) %生成值全为1(true)或0(false) 的逻辑数组 %MATLAB 中,对逻辑数组的判断只有0和非0两种结果,非0的数一律认为是true
    f = nan(2) %生成值全为 NaN 的数组

使用道具

板凳
ghjktdf 发表于 2017-6-19 16:30:39 |只看作者 |坛友微信交流群
1.4 矩阵的复制 repmat

    a = [1 2;3 4]
    disp('[a a a;a a a] = ')
    disp([a a a;a a a])
    disp('repmat(a,2,3) = ')
    disp(repmat(a,2,3)) %按行复制 2 次,按列复制 3 次
$\bf{注意:}$

disp表示输出元素
1.5 Kronecker 乘积

     %C = kron(A,B),用 A 的每个元素乘以 B 矩阵,然后按 A 的元素顺序排列
     a = [1 2;3 4]
     b = ones(2,3)
     disp('kron(a,b) = ')
     disp(kron(a,b))
     disp('kron(b,a) = ')
     disp(kron(b,a)) %repmat 可以用 kron 代替

使用道具

报纸
ghjktdf 发表于 2017-6-20 14:09:14 |只看作者 |坛友微信交流群
1.6 获取元素

一维数组

    a = rand(1,8)
    disp('a(1:2:end) = ') %end 表示最后一个元素,对于步长不为 1 的情况,如果不能整除,也不会报错
高维数组

    a = rand(4,5)
    disp('a(3,4) = ')
    disp(a(3,4))
    disp('a(3,:) = ')
    disp(a(3,:))
    disp('a(:,[2,4]) = ')
    disp(a(:,[2,4]))
1.7 删除数组元素

    a = zeros(4,5);
    for i = 1:numel(a)
        a(i) = i;
    end
    a
    a(3,:) = [];
    disp('a(3,:) = [];')
    a
    a(1) = []; %对多维数组,如果 a(1) = [],将破坏多维结构
    disp('a(1) = [];')
    a

使用道具

地板
lixuewei3 发表于 2017-6-20 14:25:20 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 21:30