Matlab基础

size(x):x矩阵的维度

length(x):x的所有维度中最大的长度

zeros(1,2):构建1行2列的零矩阵

ones(2,3):构建2行3列的1矩阵

eye(2):构建2x2的单位矩阵,对角线为1其余为0的矩阵

round(x):四舍五入取整

ceil(x):向上取整

floor(x):向下取整

repmat([1,2],2, 3):将[1,2]作为一个整体,扩充为2行3列,也就是[1,2,1,2,1,2; 1,2,1,2,1,2]的样子

diff(x):前向差值,即x的后一项减前一项

逻辑运算符号:>, <, ==, ~=, &&, ||

function

1
2
3
4
5
6
7
8
9
% 定义函数
function volume = calcVolume(r)
% describe
h = 1;
volume = pi*(r^2)*h;
return

% 调用
wheel = calcVolume(5)

for循环

1
2
3
for i = 1:size(EEG,1)
filteredEEG(i,:)=filter(EEG(i,:));
end

分配空间|allocating space

1
2
3
4
5
filteredEEG = zeros(size(EEG)); # 提前分配空间,以减少内存
for i = 1:size(EEG,1)
filteredEEG(i,:)=filter(EEG(i,:));
end

数据类型 cell

1
2
3
4
5
6
image{1} = 'bear';
image{2} = [1 3 5];
image{3} = 'tiger';

>> image{3}(1:2)
>> 'ti'

数据类型 structure

1
2
3
4
5
subject(1).label = 'S1';
subject(1).samplingFreq = 200;
subject(1).EEG = [..., ..., ...]
...
subject(2).label = 'S2'

多维矩阵

1
2
3
4
5
EEG(:,:,1); %输出的是第一页
%EEG(row, column, page)

squeeze(EEG(:,2,:)) %输出并压缩维度

📌 如何提高运算matlab的运算速率?

1)矩阵初始化
2)尽量用矩阵运算,避免用loop
3)存储为行的形式而不是列的形式,即[1,2,3,…]而不是[1;2;3;…]
4)用matlab profiler来找花费时间最久的地方


声明:此blog内容为上课笔记,仅为分享使用。部分图片和内容取材于课本、老师课件、网络。如果有侵权,请联系aursus.blog@gmail.com删除。