Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 求方程的估计解_Matlab - Fatal编程技术网

Matlab 求方程的估计解

Matlab 求方程的估计解,matlab,Matlab,我有一个截断函数,定义为: function f = phi_b(x, b) if b == 0 f = sign(x); else f = -1 * (x<-b) + 1*(x>b) + (1/b) * x .* ((x>=-b & x<=b)); end; 我最终需要的功能是: r = @(b) (1/100) * sum((phi_b(y,b)).^2); 问题在于找到方程r(b)==0.1的解。像下面这样的常规程序将不起作用: solve(r

我有一个截断函数,定义为:

function f = phi_b(x, b)
if b == 0
  f = sign(x);
else
  f = -1 * (x<-b) + 1*(x>b) + (1/b) * x .* ((x>=-b & x<=b));
end;
我最终需要的功能是:

 r = @(b) (1/100) * sum((phi_b(y,b)).^2);
问题在于找到方程
r(b)==0.1
的解。像下面这样的常规程序将不起作用:

solve(r(b)==0.1, b)
有没有办法解决这类方程?

如果
r(b)
的结果是一个向量,您可以调用
min
函数,查看该向量中最接近
0.1
的位置。您可以执行以下操作:

result = r(b);
[val,index] = min(abs(result - 0.1));
val
将包含向量中与此标准匹配的最佳元素的“关闭”程度
0.1
,并且
index
将告诉您此元素在
结果
向量中的位置。例如,如果
val=0.00001
index=7
,这意味着
result
中的最佳值是
0.00001
远离
0.1
。另外,
result
中的索引
7
是最佳元素所在的位置。要查看实际值,请执行
r(7)
r(索引)

有趣的是,您可以使用
val
作为测量数据分辨率的一种方法。换句话说,如果
val
非常大,这可能意味着您需要以较小的步长在向量中引入更多的值。如果
val
非常小,这可能意味着您最初指定为
b
向量的内容就足够了。我不熟悉该函数,因此我没有考虑您提供给
r
函数的数据是否有解决方案

result = r(b);
[val,index] = min(abs(result - 0.1));