如何解决指数变量

43岁的观点(30天)
托马斯Bulenga
托马斯Bulenga 2023年5月15日在十七12
编辑: 约翰D 'Errico 原因在2023年5月15日21:24
我有这个指数方程。
Y = A + Bexp (−CX)
为各种Y的值,我需要确定和X值B和c .解决函数似乎不工作。
任何想法将appreaciated。
6个评论
约翰D 'Errico
约翰D 'Errico 2023年5月15日21:18
编辑:约翰D 'Errico 原因在2023年5月15日21:24
请不要回答你的问题,当它只是一个评论。学习如何做一个评论。
无论如何,没有指数增长或衰退的迹象。你的数据不符合你想要的模型,构成。现在,我想,如果你抛弃过去的数据点,它可能看起来像指数增长,因为可以有曲率。
X = (2 4 6 8 10 12 16 20);
Y = (0.00357246 0.003976621 0.004660491 - 0.0055569 0.007139916 - 0.009158161 0.012885998 - 0.010789951);
情节(X (1: end-1), Y (1: end-1),“bo - - - - - -”X(结束),Y(结束),“rs”)
然而最后一个数据点完全吹走任何这些系数的估计。甚至下一个最后的数据点会是一个重要的问题。

登录置评。

接受的答案

图像分析
图像分析 2023年5月15日17:48
好吧,这是适应你的实际数据。请注意,它看上去不像一个指数衰减。
%使用fitnlm()以适应非线性模型(一个指数衰减曲线,Y = * exp (- b * x) + c)通过噪声数据。
%需要统计和机器学习的工具箱,这是fitnlm()包含。
%初始化步骤。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 20;
%建立X坐标从0到20每0.5单位。
X = (2 4 6 8 10 12 16 20);
Y = (0.035 0.04 0.045 - 0.048 0.053 - 0.059 0.063 - 0.07);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%现在我们有嘈杂的训练数据,我们可以发送到fitnlm ()。
%画出嘈杂的初始数据。
情节(X, Y," b *’,“线宽”2,“MarkerSize”15);
网格;
% X和Y转换成一个表,即形式fitnlm()喜欢输入数据。
%注意:没关系,如果X和Y是行向量和列向量自我们使用(:)让他们为表列向量。
台=表(X (:), Y (:));
%的模型定义为Y = * exp (- b * x) + c
%注意的“x”modelfun有关大x和Y。
% x((: 1)实际上是x, x(:, 2)实际上是Y -第一和第二列的表。
modelfun = @ (b, x) b (1) * exp (- b (2) * x (: 1)) + b (3);
%的猜测值开始。把你最好的猜测。
aGuessed = 1我选择%任意样本值。
bGuessed = -0.5
cGuessed = 1
beta0 = [aGuessed、bGuessed cGuessed];%的猜测值开始。把你最好的猜测。
%现在,下一行是实际的模型计算。
mdl = fitnlm(资源描述、modelfun beta0);
%现在模型创建和系数进行确定。
%耶! ! ! !
%从模型中提取系数的值对象。
%的实际系数是“估计”列的“系数”表的模式的一部分。
系数= mdl.Coefficients {:,“估计”}
%创建平滑/退化数据使用模型:
yFitted =系数(1)* exp(系数(2)* X) +系数(3);
%现在做完了,我们可以画出平滑模型作为红线经历吵闹的蓝色标记。
持有;
情节(X, yFitted,的r -,“线宽”2);
网格;
标题(的指数回归fitnlm ()”,“字形大小”、字形大小);
包含(“X”,“字形大小”、字形大小);
ylabel (“Y”,“字形大小”、字形大小);
legendHandle =传奇(原来培训Y ','拟合Y ',“位置”,“北”);
legendHandle。字形大小= 30;
%的地方公式文本大约中间的情节。
formulaString = sprintf (' Y = %。3f * exp(-%.4f * X) + %.3f'系数,系数(1),(2)、(3)系数)
xl = xlim;
yl = ylim;
xt = xl (1) + abs (xl (2) xl (1)) * 0.025;
欧美= yl型(1)+ abs (yl yl型(2)(1))* 0.59;
formulaString文本(xt,欧美,“字形大小”25岁的“FontWeight”,“大胆”);
%设置图属性:
%全屏放大图。
集(gcf,“单位”,“归一化”,“OuterPosition”,(0 0 1 1));
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“NumberTitle”,“关闭”)

更多的答案(2)

图像分析
图像分析 2023年5月15日在17:26
请看附呈的演示。它适应使用 你的 数据的数据创建的演示代码。

约翰D 'Errico
约翰D 'Errico 2023年5月15日17:59
编辑:约翰D 'Errico 2023年5月15日18:03
问题是,你一直试图解决这些问题。
更approproately,您想要使用一个工具,将满足您的数据模型。因此,曲线拟合工具箱将是一个非常不错的选择。你不想使用象征性的工具箱。不需要使用符号或symvar。
我不知道为什么你想定义一个固定的值,而不是还估计。这似乎对我而言完全陌生。但在我们做任何事情之前,让我们看看你想符合的数据。
% X和Y定义为简单的矢量数据。
X = (2 4 6 8 10 12 16 20);
Y = (0.035 0.04 0.045 - 0.048 0.053 - 0.059 0.063 - 0.07);
情节(X, Y,“o”)
看情节。
一个数据的指数曲线看上去不像。弯曲,将无穷,或水准在某一恒定值。这些数据并没有这些情况。所以试图适应它的指数模型将是一个完整的浪费你的时间。这是你应该期待看到数据,如果一个指数模型是适当的:
fplot (@ (t) exp (- t), [0, 5])
fplot (@ (t) exp (t) [0, 5])
你的数据实际上是一条直线。
P1 =适合(X, Y ',“poly1”)
P1 =
线性模型Poly1: P1 (x) = P1 * x + p2系数(95%置信界限):P1 = 0.001939 (0.001692, 0.002187) p2 = 0.03272 (0.02992, 0.03551)
情节(P1, X, Y,“波”)
任何试图符合指数模型,数据就像试图强迫方形钉成一个圆孔。适合将完整的胡扯。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!