[Matlab][Digital Processing]基本语法

抄书。


 1、注释:%

2、数据类型:

    ①数值:(u)int8,(u)int16,(u)int32,(u)int64,float,double,复数(虚部i),默认数据类型是double;char是6位,schar是8位,bitN指定任意N位带符号整数

    ②逻辑类型:True和False,使用logical函数实现强制类型转换;

    ③字符串:字面值通过单引号识别,注意所有字符都是Unicode的;

    ④数组:(Matlab特色)数组是基本数据单元,标量被看作一行一列的数组

                   多维矩阵下标用(1,2)表示,可以使用类似python的切片,用':'代替所在维数的全部;

                   End表示该维最大下标;

                   可以直接通过赋值来扩展数组的大小。

    ⑤比较运算符:同C(复数的比较只比较实部)。

3、矩阵:普通矩阵

                稀疏矩阵:

                       稀疏化:sparse;逆操作:full;

                       稀疏矩阵有很多对应普通矩阵的创建函数,如speye,sprand,sprandn;有些函数是专对稀疏矩阵的,包括nnz, nonzeros等

4、单元阵列(胞元),特殊数组,每个元素都是指向其他数据结构的指针。

                         用{}表示解引用该下标对应的元素。创建:直接赋值a{1,1}=…,或者用cell先创建,然后再赋值;显示:用celldisp;绘图:用cellplot;删除元素:用clear或者赋予空值;

                        常用单元阵列存放字符串(可以用cellstr转换二维字符数组);

                        实现可变参数类型:参数名是varargin,这样输入的参数都转化为单元阵列varargin中的元素;

                        返回不定个数的结果,类似,用varargout;

5、名称搜索路径:①当前环境的变量:whos

                               ②内置函数:库函数

                               ③当前目录的.M文件

                               ④设置的其他搜索路径:在File-Set Path中添加

6、转换函数:num2str、str2num;sscanf;

                       其他的类似C中强制类型转换的格式:double(str);

                      进制转换:hex2num,hex2dec等

                      二维字符数组,用char('',''),或者strvcat在竖直方向进行添加;

7、字符串操作函数:基本和C中函数名字一致,但是添加了很多功能,如str(n)cmp(i)(只能比较相等…);

                                  判断格式(同ctype.h中的函数,isalpha变成了isletter);

                                  findstr(一维),strmatch(二维,返回行数),strrep;

                                  strtok(返回tuple,左边是分隔符左边,右边是剩下的);

                                  upper,lower;

8、结构数组:用关键字struct创建或者直接赋值(如a.x=…,自动推断)。

                        A=struct('field1',var1,'field2',val2,…)或者直接用字符串数组或单元阵列指定结构域名。删除域:rmfield;访问域:getfield和setfield(直接用'.'亦可);

9、变量:长度不超过31,大小写敏感可以通过casesen on/off切换,

10、特殊变量:有些常用的常量被集成到matlab中,包括pi,I,j(虚数),Inf,NaN,clock,date,eps(精度),ans(上一个结果),有些可以看作函数。注意不要覆盖这些函数。

11、运算符:逻辑—与C类似,xor(异或)除外,^表示幂次;

                     关系—与C类似,不等于用~=表示;

                     算术—左除(\)和右除(/)分别将左边或右边求逆然后相乘;

                     在所有运算符前面加上.表示的不再是矩阵的运算法则,而是对应元素的计算;[]:构造数组;():多种含义,可装载下标;续行:…

12、内存顺序:列主序,在使用单下标时非常重要。

13、显示输出:默认是小数点后4位,改变格式要用format命令,如format short等;或者使用disp函数;或者使用fprintf函数,格式与C语言printf类似

14、数据文件:最简单的是save和load,后缀用.dat,参数可以是-ascii(方便共享)

15、内建函数:数值类的代数函数基本都有,包括max、min、三角函数、sqrt、mod;取整的ceil、fix和round

16、画图,plot指定坐标轴、颜色、标记类型、线形、线宽,格式是plot(x,y,'PropertyName',value)这种;title指定标题、xlabel等指定坐标轴的名称,grid on打开网格;图例用legend;打印图像用print;axis控制坐标轴范围;hold on/off在同一坐标轴画图;figure n,选择当前图像;gcf返回当前图像数;在一个窗口画图:subplot(m,n,p),p要从上到下从左到右数;字体修改用stream modifier;极坐标:polar;

     其他图:stair(s)(阶梯型), bar(条形图), barh(垂直的条形图), compass(极坐标图), pie(饼状图),hist(直方图),stem(针头图)

     三维作图:plot3;mesh(网格);surf(表面);等高线(contour),用meshgrid辅助确定范围

     直接作图(无需中间数组):ezplot,fplot;后者甚至支持tex命令

     其他坐标空间:semilog的x用对数,y轴用线形;semiloge相反;loglog两个轴都是对数

17、 逻辑类:ischar, isempty, isinf, isnan, isnumeric等

18、语句:选择——if xxx elseif xxx else xxx end,这里的格式有点类似python,不必用括号,但是以断行分,缩进不是必须的;switch,通C语言,但是不需要break断流,可以用case{1,2}来合并相同的情况,关键字otherwise表示其他,case后面用逗号。

    异常(错误)——try…catch…注意这里不是面向对象,所以也没啥异常类,这个东西比较鸡肋,错误的话就直接跳出到catch模块了。

    循环——while…end;for i=1:2:10…end,虽然不如Python的in关键字那么简洁,也比较方便。Break、continue的用法通C

19、调试:F5:执行到断点,F10:逐行调试

20、逻辑数组:直接判断数组与常量的大小比较,生成的数组只有1和0,也就是逻辑数组;

                         可以通过"对应"来简化运算。从而快速筛选所需元素。

21、函数:每个函数对应一个M文件,格式为function[out1,out2…]=fname(in1,in2…),返回值:直接令函数名=一个值即可;变量按值传递(准确来说是写时复制)。实参的个数和形参可以不等(但是不能用缺省实参),这种情况必须在程序中检查(比缺省实参略麻烦,但是更灵活,使用nargin, nargchk, inputname等函数);

                 通过全局变量共享数据,声明方式是global;

                 持久(静态)数据用persistent关键字声明。

      函数的函数:数学的概念,通过调用函数对另外的函数的某个属性(如:极值),进行计算(和FP中的高阶函数有雷同的地方)。

     子函数(中间函数):在一个M文件中声明多个函数,除去最上面一个外都是子函数。子函数只能在所在M文件中可见。

     私有函数:以private命名的子目录中的函数,只有在其父目录中是可见的。

     错误:error('msg'),msg为空数组不输出,警告用warning('msg')

     随机数:rand和randn

    直接执行字符串:eval(类似java)

    查找函数:lookfor,有类似python的注释结构

    I/O函数:textread:逐行读取并解析(格式化),适用于以行为分隔的有序数据;

                   matlab使用文件标识(类似于句柄或linux 的文件标示符)来确定文件,函数名和C类似,多出fgetl(按行读取,忽略换行符)和fgets(不忽略换行符),文件默认打开方式是二进制。fclose('all')会关闭所有文件;fprintf也可输出到文件;fscanf可以从文件中读取格式化数据;确定文件的存在性:exist;输出IO相关的错误信息:ferror;文件末尾判定:feof;uiimport:通过UI导入或直接导入剪贴板的程序;

22、图形:图像对象以句柄标识,每个图形包括uimenu(目录)、uicontrol(控件)、坐标系和uicontextmenus(右键);

                   gca返回当前坐标系句柄,gco返回当前选择对象句柄,一般习惯在存储句柄的变量名后面加上H;

                  更改对象属性:get、set,指定属性名即可,也可以使用属性编辑器完成这一过程(propedit,对于最终用户),除了标准属性外,用户也可添加任意数量的自定义属性数据到文件中(用函数setappdata和getappdata)。

                 查找属性值匹配的任意对象:findobj(比较慢);

                 暂停等待:waitforbuttonpress;

                 图像的位置:查找position属性,坐标系是标准坐标系的格式(坐下原点);

                 修改默认属性,属性名前面加上Default,修改父对象的默认属性后子对象的对应属性也会改变。

23、GUI:matlab支持基本的GUI创建,方便做出一些比较简单的框架。用guide设计,然后再自动生成的M文件中添加或修改相应函数即可。

 

转载于:https://www.cnblogs.com/HuisClos/p/9078642.html

内容概要:本文档详细介绍了一个利用Matlab实现Transformer-Adaboost结合的时间序列预测项目实例。项目涵盖Transformer架构的时间序列特征提取与建模,Adaboost集成方法用于增强预测性能,以及详细的模型设计思路、训练、评估过程和最终的GUI可视化。整个项目强调数据预处理、窗口化操作、模型训练及其优化(包括正则化、早停等手段)、模型融合策略和技术部署,如GPU加速等,并展示了通过多个评估指标衡量预测效果。此外,还提出了未来的改进建议和发展方向,涵盖了多层次集成学习、智能决策支持、自动化超参数调整等多个方面。最后部分阐述了在金融预测、销售数据预测等领域的广泛应用可能性。 适合人群:具有一定编程经验的研发人员,尤其对时间序列预测感兴趣的研究者和技术从业者。 使用场景及目标:该项目适用于需要进行高质量时间序列预测的企业或机构,比如金融机构、能源供应商和服务商、电子商务公司。目标包括但不限于金融市场的波动性预测、电力负荷预估和库存管理。该系统可以部署到各类平台,如Linux服务器集群或云计算环境,为用户提供实时准确的预测服务,并支持扩展以满足更高频率的数据吞吐量需求。 其他说明:此文档不仅包含了丰富的理论分析,还有大量实用的操作指南,从项目构思到具体的代码片段都有详细记录,使用户能够轻松复制并改进这一时间序列预测方案。文提供的完整代码和详细的注释有助于加速学习进程,并激发更多创新想法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值