matlab学习---矩阵求最大值,赋值

对近段时间matlab学习的一些总结:

  • 求最值函数,可求出最值以及定位(一维以及多维)
  • 赋值问题
  • 求方差

首先是求最值,

一维矩阵分别求最大最小值,直接利用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); %执行该条语句,查找出矩阵中最大元素和其位置




你可能感兴趣的:(matlab,matlab)