Matlab编程总结
strcmp
字符串比较函数
% 字符串比较 |
% cell数据结构也可以用 |
注意事项:
strcmp
函数用于比较文本。如果用于不受支持的数据类型,strcmp
始终返回 0- 对于不区分大小写的文本比较,请使用
strcmpi
而不是strcmp
。 - 如果要比较每个字符,可以用关系运算符(==、~=、<、>、<=、>=)
double
和single
类型
数据类型从double
类型转换成single
类型可以节省一半的空间。默认情况下matlab用double
存储数据。而double
数据类型占8个字节,single
类型占4个字节。
应用:在matlab中, 当数据比较大时,运算起来就困难了,有时候还会out of memory,就可以尝试将double类型改为single类型。
扩展:Matlab数据类型的转换
>> logical(-3.3) |
Matlab正则表达式regexp
clear;clc |
参数 | 输出 |
---|---|
start (默认) |
匹配字符的起始索引 |
end |
匹配字符的终止索引 |
tokenExtents |
所有token的开始和终止的索引 |
match |
匹配到的字符 |
names |
每个token的名称和内容 |
split |
非匹配到的子字符串的内容 |
sub2ind
3D索引指标转化为线性索引指标
% 创建一个指标索引 |
Matlab本地函数
从版本R2016b开始,可以使用本地函数
,如下所示:
data = 1:10; %# A vector of data |
注意事项:
- Matlab程序中所有的function函数应该放在文件的末尾
- 无法在command中运行,必须
F5
在发布R2016b之前,可以在MATLAB脚本中定义的唯一函数类型是匿名函数
。例如:
data = 1:10; %# A vector of data |
多行注释
-
ctrl+R
或ctrl+T
-
多行注释
%{
something something
%}
调试技巧
在注释段前面加一行:if LOGICAL(0)
在注释段后面加一行:end
创建一个空矩阵
Matlab空矩阵没有长度
a = [] |
只能通过创建有长度的矩阵实现
a = ones(2,4)*nan |
保存数据
fid = fopen('test4.txt', 'a'); |
waitbar使用
h = waitbar(0,'训练开始') % 初始化进度条 |
LibSVM安装
-
Matlab安装MinGW-w64编译器
MinGW-w64下载地址:http://tdm-gcc.tdragon.net/download
注意:应下载64位的,而非32位。
-
修改
make.m
文件将其中的
CFLAGS
改为COMPFLAGS
-
在
MATLAB
命令行内运行命令setenv('MW_MINGW64_LOC','C:\TDM-GCC-64')
-
在
MATLAB
命令行内运行命令mex -setup C++
-
在
MATLAB
命令行内运行命令make
-
添加文件到
MATLAB
路径 -
测试:
[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
概率密度拟合(连续-ksdensity
)
对于离散数据,可以直接用hist,统计频次。
对于连续数据,则必须使用概率密度函数。
调用格式:
[f,xi] = ksdensity(x)
直接划分100分f = ksdensity(x,xi)
可以根据指定的标的,输出y
pdf与hist的比较:
Matlab代码:
y = randn(1,10000); |