矩阵的一些操作
1.三维变二维
EEG = squeeze(mean(EEG,3));
将EEG在第三维平均后,转为二维矩阵。
2.对角线提取和赋值
2.1对角线:diag(A);
2.2 更改对角线上的数据,可以借助对焦矩阵来解决:
A(logical(eye(size(A))))=B;
用eye函数生成和A一样的对角矩阵,然后使用logical函数来对A的对角线函数进行赋值。
这里B是对角线的元素组成的向量。
2.3 其他的提取删除:
2.3.1 整行提取: A=B(r,:);% 提取一行
A=B([a1:a2],:);% 提取a1至a2行
2.3.2 整行删除: A([r1,r2],:) = [];% 删除a1至a2行
2.3.3 删除NaN: z=find(~isnan(A));
B=A(z);
B=A(~isnan(A));
或者
p = find(isnan(A));
A(p) = [];%或者赋值为0
2.3.4 删除包含NaN的行:A(any(isnan(A), 2),:) = [];
删除全部为NaN的行:A(all(isnan(A), 2),:) = [];
2.3.5 替换:
A(A==x)=X; %将A中等于x的值全部替换为X
A(isnan(A))=X;%将A中等于nan的值全部替换为X
2.3.6 寻找:
[I J] = find(A>5) ;%返回矩阵A中元素值大于5的元素的行、列索引,这里I,J分别是找到的所有元素的行和列对应的索引组成的两个一维向量
2.3.7 寻找全是0 的行
[C, ia, ic] = unique(A,'rows');
m_inf=find(ic==1);
3.二值化
3.1将小于某个值的数赋值为0
A(A<10)=0;
4.提取矩阵的某些感兴趣部分
4.1选取某些列
对于m行n列的sig信号(m*n),提取感兴趣的a1:a2和a3:a4列以及单独的a5列的所有行,
sig1=sig(:,[a1:a2 a3:a4 a5]);