matlab中编写函数返回下标值编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.函数声明如下:ind = findNearest(x, desiredVal)其中x是向量或矩阵,desiredVal是要查找的值.要求:不要假设x
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/24 06:20:57
![matlab中编写函数返回下标值编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.函数声明如下:ind = findNearest(x, desiredVal)其中x是向量或矩阵,desiredVal是要查找的值.要求:不要假设x](/uploads/image/z/14399476-52-6.jpg?t=matlab%E4%B8%AD%E7%BC%96%E5%86%99%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E4%B8%8B%E6%A0%87%E5%80%BC%E7%BC%96%E5%86%99%E5%87%BD%E6%95%B0%2C%E4%BB%BB%E6%84%8F%E7%BB%99%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%80%BC%2C%E8%AF%A5%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E6%9C%80%E6%8E%A5%E8%BF%91%E7%BB%99%E5%AE%9A%E5%80%BC%E7%9A%84%E5%80%BC%E7%9A%84%E4%B8%8B%E6%A0%87.%E5%87%BD%E6%95%B0%E5%A3%B0%E6%98%8E%E5%A6%82%E4%B8%8B%EF%BC%9Aind+%3D+findNearest%28x%2C+desiredVal%29%E5%85%B6%E4%B8%ADx%E6%98%AF%E5%90%91%E9%87%8F%E6%88%96%E7%9F%A9%E9%98%B5%2CdesiredVal%E6%98%AF%E8%A6%81%E6%9F%A5%E6%89%BE%E7%9A%84%E5%80%BC.%E8%A6%81%E6%B1%82%EF%BC%9A%E4%B8%8D%E8%A6%81%E5%81%87%E8%AE%BEx)
matlab中编写函数返回下标值编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.函数声明如下:ind = findNearest(x, desiredVal)其中x是向量或矩阵,desiredVal是要查找的值.要求:不要假设x
matlab中编写函数返回下标值
编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.
函数声明如下:ind = findNearest(x, desiredVal)
其中x是向量或矩阵,desiredVal是要查找的值.
要求:不要假设x中包含desiredVal,而是寻找最接近desiredVal的值.如果有多个值与desiredVal的距离相同,则返回这些值的下标.
提示:1)使用函数abs,min和find;
2)直接将min应用于矩阵会有些小麻烦;
3)如果要将矩阵Q转化为向量y,可以使用语句 y = Q(:),然后利用 m = min(y)可以计算出Q中的最小值.如果要找出Q中最小值的下标,可使用 inds = find(Q==m).
matlab中编写函数返回下标值编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.函数声明如下:ind = findNearest(x, desiredVal)其中x是向量或矩阵,desiredVal是要查找的值.要求:不要假设x
函数如下:
function ind = findNearest(x, desiredVal)
[m,n] = size(x); %%%% 先确定x的大小
erro = abs(x(:)-desiredVal); %%%% 计算误差值,矩阵需要拉成一维向量
min_e = min(erro); %%%% 找到最小误差
temp = reshape(erro,m,n); %%%%% 将一维向量恢复成矩阵
[a,b] = find(temp==min_e); %%%%% 找到最小误差对应的下标
ind = [a b]; %%%% 返回 a 为下标的行,b 为下标中的列
结果测试:
>> A = rand(3) %%%% 产生0到1均匀分布随机数
A =
0.3922 0.7060 0.0462
0.6555 0.0318 0.0971
0.1712 0.2769 0.8235
>> desired = 0.5 %%%% 测试数据0.5
desired =
0.5000
>> findNearest(A,desired) %%%% 调用函数找最接近数下标
ans =
1 1 %%%%% 结果为1 1 ,即第一行第一列,0.3922确实是最接近0.5.验证通过
copyright(c) cxd1301