用matlab求三维矩阵元素的最值以及对应的位置

如题所述

[x,y,z]=meshgrid(1:7,7:14,1:3);%生成三个三维数组,以x为例
min_x=min(x(:));%计算三维维数组x的最小值
max_x=max(x(:));%计算三维维数组x的最大值

s=size(x);%计算三维维数组的大小
Lin=find(x<=min_x);%计算最小值位置的单下标
Lax=find(x>=max_x);%计算最大值位置的单下标
[i,j,k]=ind2sub(s,Lin);%将最小值单下标转为三维多下标
[m,n,p]=ind2sub(s,Lax);%将最大值单下标转为三维多下标

Loc_in=[i,j,k];%最小值位置下标
Loc_ax=[m,n,p];%最大值位置下标
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-12
直接matlab编程的话就可以直接用冒泡法实现,与c很类似?for x y z from 0 to max。不同矩阵每次改最大值。(x,y,z)位置只要每次比较的时候把大的那个位置替换就行了,用Simulink模拟这个要求太高,搞不明白。追问

不太明白 我读取了一张640*480的图片在matlab里变成了 三维矩阵
我想求这些数的最小值 与相应的位置

追答

三维的,先求z为0的那一层,可以得到一个(xy0)的最小值吧,然后再到下一层,以此类推,到最后一层,每两个比较,替换较小的那个位置,位置都是(xyz)来标识的,最后会得到最小的值和位置

追问

能把代码写出来吗

相似回答