Matlab 输入一个矩阵,利用双重for循环,寻找矩阵的最大、最小元素及其在矩阵中的位置

输入一个矩阵,利用双重for循环,寻找矩阵的最大、最小元素及其在矩阵中的位置

clc
clear all

A=[2 3 4;3 4 5;9 8 6];
M=2;
m=2;
for i=1:length(A);
    for j=1:length(A);
        if M>=A(i);
            M=A(i);
            if M>=A(j);
                M=A(j);
            end
        end
        if m<=A(i);
            m=A(i);
            if m<=A(j);
                m=A(j);
            end
        end
    end
end
[M m]
[x1 y1]=find(A==max(max(A)))
[x2 y2]=find(A==min(min(A)))
Matlab求解两个矩阵相同位置元素最大值,可以使用点运算符(即点乘“.*”)结合max函数来实现。具体步骤如下: 1. 首先确保两个矩阵的尺寸相同,这样它们在相同位置元素才能进行比较。 2. 使用点乘运算符对两个矩阵进行元素对应位置的比较,得到一个布尔矩阵,其的每个元素表示对应位置元素是否为最大值。 3. 将布尔矩阵转换为整数矩阵,通常使用double函数或int8函数可以完成转换,这样布尔值true和false将分别转换为1和0。 4. 使用sum函数对转换后的矩阵按列进行求和,得到每个位置元素最大值的数量。 5. 使用max函数找到最大值的数量所在的索引,这些索引即为最大元素位置。 6. 最后,使用这些索引从原矩阵提取最大值。 下面是一个示例代码: ```matlab A = [1 3 2; 4 5 6; 7 8 9]; B = [3 2 1; 4 3 2; 9 7 8]; % 使用点乘比较两个矩阵的相同位置元素 maxElements = (A > B) + (A == B); % 将布尔矩阵转换为整数矩阵 maxElements = double(maxElements); % 计算每个位置元素最大值的数量 maxCount = sum(maxElements, 1); % 找到最大值数量的索引 [maxValue, maxIndex] = max(maxCount); % 使用索引提取最大值 maxValues = A(sub2ind(size(A), maxIndex, 1:maxIndex-1)); ``` 注意:在上面的代码,maxIndex是从1开始的列索引,sub2ind函数用于将线性索引转换为行和列索引。A(sub2ind(size(A), maxIndex, 1:maxIndex-1))是提取每一列最大值的方式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值