matlab中max,find,min函数的总结

1。max函数的基本用法

.①   C = max(max(A)),返回矩阵最大值

②   D = max(A,[],1),返回每一行的最大值,即mx1的行向量

③   E = max(A,[],2),返回每一列的最大值,即1xm的列向量

④   F = max(A,8),当元素小于8,用8填充

⑤   [U V] = max(A),返回行列最大元素的行号与列号

 

2.find()函数的基本功能是返回向量或者矩阵中不为0的元素的位置索引。

 

3. M = min(A) 返回A的最小元素

  • 如果A是一个向量,那么min(A)返回A的最小元素
  • 如果A是一个矩阵,那么min(A)是一个行向量,包含每一列的最小值
  • 如果A是一个多维数组,那么min(A)沿着大小不等于1的第一个数组维操作,将元素视为向量。这个维度的大小变为1,而所有其他维度的大小保持不变。如果A是第一个维度为0的空数组,那么min(A)返回一个与A大小相同的空数组。

实例:

 编写一个函数或程序, 求矩阵的鞍点。(鞍点就是列的最大值与行的最大值是同一个数)

(作业和上机补充题 )

 

注意,错误的输入

因为随机生成的数组太随机了,会没有鞍点,导致这边没有值输入,,所以就报错了,所以不建议使用,,,,,别问为什么,血的教训

<think>我们正在讨论MATLAB中的两个函数:get和find。首先,我需要明确这两个函数的功能和用途,因为它们在MATLAB中属于不同的类别。 1. get函数:这是一个用于图形对象属性访问的函数。在MATLAB的图形系统中,每个图形对象(如坐标轴、线条、文本等)都有属性。get函数用于获取这些属性的当前值。 例如:对于一个图形窗口中的线条对象,我们可以使用get(h, 'Color')来获取线条的颜色,其中h是线条的句柄。 2. find函数:这是一个用于查找数组中满足条件的元素的位置的函数。它返回的是索引值(下标)。例如,在一个数组中找出所有非零元素的位置。 例如:ind = find(A>0) 会返回数组A中所有大于0的元素的索引。 因此,这两个函数在功能和使用场景上有本质的不同: - get函数主要用于图形对象的属性操作(属于图形处理)。 - find函数主要用于数组或矩阵的元素查找(属于数据操作)。 下面我将分别详细说明这两个函数: ### get函数 get函数用于获取图形对象的属性值。在MATLAB中,所有的图形对象(图形窗口、坐标轴、线条、曲面、文本等)都是具有属性的对象。每个属性控制对象的外观和行为。 语法: value = get(handle, 'PropertyName') 其中,handle是图形对象的句柄(一个标识对象的数字),'PropertyName'是属性名称的字符串。 如果不指定属性名称,则返回一个结构体,包含该对象的所有属性及其当前值。 举例: % 创建一个图形 figure; h = plot(1:10, rand(1,10)); % 获取线条的颜色 color = get(h, 'Color'); % 获取线条的所有属性 allProps = get(h); 注意:在MATLAB R2014b版本之后,MATLAB引入了新的图形系统,使用点表示法来访问属性更为常见和方便: color = h.Color; % 或者 color = h.Color; % 当h是句柄时 但是,get函数仍然可用,尤其是在需要动态指定属性名的情况下。 ### find函数 find函数用于查找数组(向量、矩阵等)中满足指定条件的元素的索引。 语法: ind = find(X) % 返回X中非零元素的线性索引(列优先顺序) ind = find(X, k) % 返回前k个非零元素的索引 ind = find(X, k, 'first') % 同上(默认) ind = find(X, k, 'last') % 返回最后k个非零元素的索引 [row, col] = find(X, ...) % 返回行和列下标(对于矩阵) [row, col, v] = find(X) % 同时返回非零元素的值 举例: A = [1 0 2; 0 3 0; 4 0 5]; % 查找所有非零元素的索引 ind = find(A); % 返回线性索引:[1; 3; 5; 7; 9]? 不对,我们实际计算一下: 按列优先:第一列:[1,0,4] -> 非零位置:1(1)和3(4) -> 索引1和3 第二列:[0,3,0] -> 非零位置:2(3) -> 索引5(因为第一列有3个元素,所以第二列第一个元素是第4个,第二个是第5个,第三个是第6个,因此位置2在第二列第二行,对应线性索引5) 第三列:[2,0,5] -> 非零位置:1(2)和3(5) -> 索引7和9 实际上,MATLAB中线性索引从1开始,所以整个矩阵A的元素按列存储为:[1;0;4;0;3;0;2;0;5] 非零元素位置:第1个(1)、第3个(4)、第5个(3)、第7个(2)、第9个(5)。所以ind = [1;3;5;7;9] 但是,我们通常使用双下标形式: 查找大于2的元素的位置: [r, c] = find(A>2); 结果:r=[2;3], c=[2;3] 因为A(2,2)=3,A(3,3)=5(注意:A(3,1)=4>2,所以还有(3,1)?) 重新检查A: 第1列:1,0,4 -> 4>2,位于(3,1) 第2列:0,3,0 -> 3>2,位于(2,2) 第3列:2,0,5 -> 5>2,位于(3,3) 所以大于2的元素的位置是 (3,1)、(2,2)、(3,3) 因此,r=[3;2;3],c=[1;2;3] 因此,这两个函数MATLAB中属于不同的领域,功能完全不同。 总结: get函数:用于获取图形对象的属性(图形句柄操作)。 find函数:用于在数组中查找满足条件的元素的位置(数组操作)。 注意:在MATLAB中,还有一个函数set,用于设置图形对象的属性,与get对应。 如果用户的问题是关于如何使用这两个函数,那么需要根据具体的使用场景来选择。 相关问题: 根据上面的解释,我们可以生成以下相关问题: 1. 在MATLAB中,如何获取一个图形对象的属性列表? 2. 除了find函数MATLAB中还有哪些方法可以条件索引? 3. 在MATLAB中,如何设置图形对象的属性? 4. find函数能否在多维数组中使用?如何返回多维索引? 5. 使用get函数时,如果不知道图形对象的句柄怎么办? 由于用户的问题直接询问两个函数的区别,因此我们的回答已经明确区分了它们的不同使用场景和功能。 </think>### MATLAB中`get`函数与`find`函数的区别 #### 1. **功能定位** - **`get`函数**: 用于获取图形对象(如坐标轴、线条、文本等)的属性值,属于**图形系统操作函数**。 示例:`color = get(gca, 'Color')` 获取当前坐标轴背景色[^1]。 - **`find`函数**: 用于查找数组中满足条件的元素位置,属于**数值计算函数**。 示例:`indices = find(A > 5)` 返回数组`A`中大于5的元素索引[^1]。 #### 2. **应用场景** | 函数 | 适用对象 | 典型用途 | |-----------|---------------------------|------------------------------| | `get` | 图形对象(Figure, Axes等)| 读取颜色、线宽、字体等属性 | | `find` | 数值数组/矩阵 | 定位非零元素、筛选特定值 | #### 3. **语法对比** - **`get`语法**: ```matlab value = get(handle, 'PropertyName') % 获取单个属性 all_props = get(handle) % 获取对象所有属性 ``` 示例:获取坐标轴范围: ```matlab x_lim = get(gca, 'XLim') % 返回[x_min, x_max] ``` - **`find`语法**: ```matlab idx = find(X) % 非零元素索引 [row,col] = find(X > 0) % 返回行列下标 idx = find(X, k, 'last') % 查找最后k个满足条件的元素 ``` 示例:定位矩阵中的正数: ```matlab A = [-1, 0, 3; 2, 0, -4]; [r, c] = find(A > 0) % 返回 r=[1;2], c=[3;1] ``` #### 4. **输出结果** - **`get`**:返回属性值(数值、字符串、数组等)。 ```matlab >> get(gcf, 'Name') % 返回当前窗口标题字符串 ``` - **`find`**:返回索引位置(标量、向量或行列坐标)。 ```matlab >> find([0,5,0,7]) % 返回 [2,4] ``` #### 5. **典型错误场景** - **混淆对象类型**: ```matlab % 错误:对数值数组使用get value = get([1,2,3], 'XData') % 报错"Invalid object handle" % 错误:对图形对象使用find idx = find(gca) % 报错"输入必须为数值或逻辑值" ``` ### 总结对比表 | **特性** | `get`函数 | `find`函数 | |----------------|--------------------------|--------------------------| | 作用领域 | 图形系统 | 数值计算 | | 输入要求 | 图形对象句柄 + 属性名 | 数值/逻辑数组 | | 输出类型 | 属性值(多样) | 索引(整数位置) | | 是否修改数据 | 否(只读) | 否(仅查找) | ‡‡相关问题‡‡ 1. 如何用`set`函数修改MATLAB图形对象的属性? 2. MATLAB中`find`函数能否直接返回满足条件的元素值(而非索引)? 3. 除了`get`,还有哪些函数可以访问MATLAB对象的属性? 4. 如何高效查找大型稀疏矩阵中非零元素的位置? [^1]: 引用参考自MATLAB官方文档的函数说明。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值