matlab中编写函数返回下标值编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.函数声明如下:ind = findNearest(x, desiredVal)其中x是向量或矩阵,desiredVal是要查找的值.要求:不要假设x

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 15:27:33
matlab中编写函数返回下标值编写函数,任意给定一个值,该函数返回最接近给定值的值的下标.函数声明如下:ind = findNearest(x, desiredVal)其中x是向量或矩阵,desiredVal是要查找的值.要求:不要假设x

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