一维矩阵分别求最大最小值,直接利用max,min函数。如果是二维矩阵,可多次利用max,min函数,这是因为,第一次使用是对每行求最小,然后定位值也是一维矩阵,所以再次取值才能找到整个矩阵最小的值。
[maxvalue,index1] = max([4 2 3 ]); %执行该条语句,查找出矩阵中最大元素和其位置
[minvalue,index2] = min([4 2 3 ]); %执行该条语句,查找出矩阵中最小元素和其位置
此外,对于多维矩阵,以上的方法不好直接看出最大值的行列的位置。该函数是重载函数,可以多次利用最值函数求多维矩阵的最值,返回的值再利用find函数进行搜索定位。见以下代码。
D2=[1,2,3;4,5,6;7,8,9];
value=max(max(D2))
[row,col]=find(value==D2)
对单个值,某行,整个矩阵赋值为0,或者对整个矩阵的赋值。第一种情况详情见代码。
>>a=zeros(2, 5);
>>a(:)=-4:5
第二行的写法是,对整个矩阵的值从第一列开始到最后一列赋值从-4到5的排列。
第二种情况是赋值为零。
D2=[1,2,3;4,5,6;7,8,9];
% value=max(max(D2))
% [row,col]=find(value==D2)
C=cat(3,D2,2*D2,3*D2);
C()
C(:,:,3)=0
C(:,1,3)=0
C(1,1,3)=0
以此进行扩展可以考虑如果求协方差矩阵的话应该如何实现呢,,,可将MUSIC算法中协方差矩阵如何实现考虑进去。有时间就试一下,多去尝试。
% 练习一些功能的使用
D2=[1,2,3;4,5,6;7,8,9];
%求平均值
m=mean(D2(:,2));
% 保存对应的的方差
for i=1:3
temp(i)=(D2(i,2)-m)^2;
end
%找出方差最大的值并标注位置,此时对应的位置就是需要去掉的点的信息
[maxvalue,index1] = max(temp); %执行该条语句,查找出矩阵中最大元素和其位置
temp(index1)=0;
[maxvalue,index2] = max(temp); %执行该条语句,查找出矩阵中最大元素和其位置