2024年11月1日发(作者:巧曲)
方便大家使用的最小二乘法曲线拟合的Matlab程序
非常方便用户使用,直接按提示操作即可;这里我演示一个例子:(红色部分为用
户输入部分,其余为程序运行的结果,结果图为,)
请以向量的形式输入x,y.
x=[1,2,3,4]
y=[3,4,5,6]
通过下面的交互式图形,你可以事先估计一下你要拟合的多项式的阶数,方便下
面的计算.
polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的
[Export]输出图形
回车打开polytool交互式界面
回车继续进行拟合
输入多项式拟合的阶数 m = 4
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 72
In zxecf at 64
输出多项式的各项系数
a = 0.0001
a = -0.2008
a = 0.7022
a = 0.0000
a = 2.4799999999999973
输出多项式的有关信息 S
R: [4x5 double]
df: 0
normr: 2.3915e-015
Warning: Zero degrees of freedom implies infinite error bounds.
> In polyval at 104
In polyconf at 92
In zxecf at 69
观测数据 拟合数据
x y yh
1.0000 3.0000 3.0000
2.0000 4.0000 4.0000
3 5 5
4.0000 6.0000 6.0000
剩余平方和 Q = 0.000000
标准误差 Sigma = 0.000000
相关指数 RR = 1.000000
请输入你所需要拟合的数据点,若没有请按回车键结束程序.
输入插值点 x0 = 3
输出插值点拟合函数值 y0 = 5.0000
>>
结果:
一些matlab优化算法代码的分享
代码的目录如下:
欢迎讨论
1.约束优化问题:
minRosen(Rosen梯度法求解约束多维函数的极值)(算法还有bug)
minPF(外点罚函数法解线性等式约束)
minGeneralPF(外点罚函数法解一般等式约束)
minNF(内点罚函数法)
minMixFun(混合罚函数法)
minJSMixFun(混合罚函数加速法)
minFactor(乘子法)
minconPS(坐标轮换法)(算法还有bug)
minconSimpSearch(复合形法)
2.非线性最小二乘优化问题
minMGN(修正G-N法)
3.线性规划:
CmpSimpleMthd(完整单纯形法)
4.整数规划(含0-1规划)
DividePlane(割平面法)
ZeroOneprog(枚举法)
5.二次规划
QuadLagR(拉格朗日法)
ActivedeSet(起作用集法)
6.辅助函数(在一些函数中会调用)
minNT(牛顿法求多元函数的极值)
Funval(求目标函数的值)
minMNT(修正的牛顿法求多元函数极值)
minHJ(黄金分割法求一维函数的极值)
7.高级优化算法
1)粒子群优化算法(求解无约束优化问题)
1>PSO(基本粒子群算法)
2>YSPSO(待压缩因子的粒子群算法)
3>LinWPSO(线性递减权重粒子群优化算法)
4>SAPSO(自适应权重粒子群优化算法)
5>RandWSPO(随机权重粒子群优化算法)
6>LnCPSO(同步变化的学习因子)
7>AsyLnCPSO(异步变化的学习因子)(算法还有bug)
8>SecPSO(用二阶粒子群优化算法求解无约束优化问题)
9>SecVibratPSO(用二阶振荡粒子群优化算法求解五约束优化问题)
10>CLSPSO(用混沌群粒子优化算法求解无约束优化问题)
11>SelPSO(基于选择的粒子群优化算法)
12>BreedPSO(基于交叉遗传的粒子群优化算法)
13>SimuAPSO(基于模拟退火的粒子群优化算法)
2)遗传算法
1>myGA(基本遗传算法解决一维约束规划问题)
2>SBOGA(顺序选择遗传算法求解一维无约束优化问题)
3>NormFitGA(动态线性标定适应值的遗传算法求解一维无约束优化问题)
4>GMGA(大变异遗传算法求解一维无约束优化问题)
5>AdapGA(自适应遗传算法求解一维无约束优化问题)
6>DblGEGA(双切点遗传算法求解一维无约束优化问题)
7>MMAdapGA(多变异位自适应遗传算法求解一维无约束优化问题)
自己编写的马尔科夫链程序
A 代表一组数据序列 一维数组 本程序的操作对象也是如此
t=length(A); % 计算序列“A”的总状态数
B=unique(A); % 序列“A”的独立状态数顺序,“E”
E=sort(B,'ascend');
a=0;
b=0;
c=0;
d=0;
for j=1:1:tt
Localization=find(A==E(j)); % 序列“A”中找到其独立状态“E”的位置
for i=1:1:length(Localization)
if Localization(i)+1>t
break; % 范围限定
elseif A(Localization(i)+1)== E(1)
a=a+1;
elseif A(Localization(i)+1)== E(2)
b=b+1;
elseif A(Localization(i)+1)== E(3)
c=c+1;
% 依此类推,取决于独立状态“E”的个数
else
d=d+1;
end
end
T(j,1:tt)=[a,b,c,d]; % “T”为占位矩阵
end
TT=T;
for u=2:1:tt
TT(u,:)= T(u,:)- T(u-1,:);
end
TT; % 至此,得到转移频数矩阵
Y=sum(TT,2);
for uu=1:1:tt
TR(uu,:)= TT(uu,:)./Y(uu,1);
end
TR % 最终得到马尔科夫转移频率/概率矩阵
% 观测序列马尔科夫性质的检验:
N=numel(TT);
uuu=1;
Col=sum(TT,2); % 对列求和
Row=sum(TT,1); % 对行求和
Total=sum(Row); % 频数总和
for i=1:1:tt
for j=1:1:tt
xx(uuu,1)=sum((TT(i,j)-(Row(i)*Col(j))./Total).^2./( (Row(i)*Col(j)).
/Total));
uuu=uuu+1; % 计算统计量x2
end
end
xx=sum(xx)
2024年11月1日发(作者:巧曲)
方便大家使用的最小二乘法曲线拟合的Matlab程序
非常方便用户使用,直接按提示操作即可;这里我演示一个例子:(红色部分为用
户输入部分,其余为程序运行的结果,结果图为,)
请以向量的形式输入x,y.
x=[1,2,3,4]
y=[3,4,5,6]
通过下面的交互式图形,你可以事先估计一下你要拟合的多项式的阶数,方便下
面的计算.
polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的
[Export]输出图形
回车打开polytool交互式界面
回车继续进行拟合
输入多项式拟合的阶数 m = 4
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 72
In zxecf at 64
输出多项式的各项系数
a = 0.0001
a = -0.2008
a = 0.7022
a = 0.0000
a = 2.4799999999999973
输出多项式的有关信息 S
R: [4x5 double]
df: 0
normr: 2.3915e-015
Warning: Zero degrees of freedom implies infinite error bounds.
> In polyval at 104
In polyconf at 92
In zxecf at 69
观测数据 拟合数据
x y yh
1.0000 3.0000 3.0000
2.0000 4.0000 4.0000
3 5 5
4.0000 6.0000 6.0000
剩余平方和 Q = 0.000000
标准误差 Sigma = 0.000000
相关指数 RR = 1.000000
请输入你所需要拟合的数据点,若没有请按回车键结束程序.
输入插值点 x0 = 3
输出插值点拟合函数值 y0 = 5.0000
>>
结果:
一些matlab优化算法代码的分享
代码的目录如下:
欢迎讨论
1.约束优化问题:
minRosen(Rosen梯度法求解约束多维函数的极值)(算法还有bug)
minPF(外点罚函数法解线性等式约束)
minGeneralPF(外点罚函数法解一般等式约束)
minNF(内点罚函数法)
minMixFun(混合罚函数法)
minJSMixFun(混合罚函数加速法)
minFactor(乘子法)
minconPS(坐标轮换法)(算法还有bug)
minconSimpSearch(复合形法)
2.非线性最小二乘优化问题
minMGN(修正G-N法)
3.线性规划:
CmpSimpleMthd(完整单纯形法)
4.整数规划(含0-1规划)
DividePlane(割平面法)
ZeroOneprog(枚举法)
5.二次规划
QuadLagR(拉格朗日法)
ActivedeSet(起作用集法)
6.辅助函数(在一些函数中会调用)
minNT(牛顿法求多元函数的极值)
Funval(求目标函数的值)
minMNT(修正的牛顿法求多元函数极值)
minHJ(黄金分割法求一维函数的极值)
7.高级优化算法
1)粒子群优化算法(求解无约束优化问题)
1>PSO(基本粒子群算法)
2>YSPSO(待压缩因子的粒子群算法)
3>LinWPSO(线性递减权重粒子群优化算法)
4>SAPSO(自适应权重粒子群优化算法)
5>RandWSPO(随机权重粒子群优化算法)
6>LnCPSO(同步变化的学习因子)
7>AsyLnCPSO(异步变化的学习因子)(算法还有bug)
8>SecPSO(用二阶粒子群优化算法求解无约束优化问题)
9>SecVibratPSO(用二阶振荡粒子群优化算法求解五约束优化问题)
10>CLSPSO(用混沌群粒子优化算法求解无约束优化问题)
11>SelPSO(基于选择的粒子群优化算法)
12>BreedPSO(基于交叉遗传的粒子群优化算法)
13>SimuAPSO(基于模拟退火的粒子群优化算法)
2)遗传算法
1>myGA(基本遗传算法解决一维约束规划问题)
2>SBOGA(顺序选择遗传算法求解一维无约束优化问题)
3>NormFitGA(动态线性标定适应值的遗传算法求解一维无约束优化问题)
4>GMGA(大变异遗传算法求解一维无约束优化问题)
5>AdapGA(自适应遗传算法求解一维无约束优化问题)
6>DblGEGA(双切点遗传算法求解一维无约束优化问题)
7>MMAdapGA(多变异位自适应遗传算法求解一维无约束优化问题)
自己编写的马尔科夫链程序
A 代表一组数据序列 一维数组 本程序的操作对象也是如此
t=length(A); % 计算序列“A”的总状态数
B=unique(A); % 序列“A”的独立状态数顺序,“E”
E=sort(B,'ascend');
a=0;
b=0;
c=0;
d=0;
for j=1:1:tt
Localization=find(A==E(j)); % 序列“A”中找到其独立状态“E”的位置
for i=1:1:length(Localization)
if Localization(i)+1>t
break; % 范围限定
elseif A(Localization(i)+1)== E(1)
a=a+1;
elseif A(Localization(i)+1)== E(2)
b=b+1;
elseif A(Localization(i)+1)== E(3)
c=c+1;
% 依此类推,取决于独立状态“E”的个数
else
d=d+1;
end
end
T(j,1:tt)=[a,b,c,d]; % “T”为占位矩阵
end
TT=T;
for u=2:1:tt
TT(u,:)= T(u,:)- T(u-1,:);
end
TT; % 至此,得到转移频数矩阵
Y=sum(TT,2);
for uu=1:1:tt
TR(uu,:)= TT(uu,:)./Y(uu,1);
end
TR % 最终得到马尔科夫转移频率/概率矩阵
% 观测序列马尔科夫性质的检验:
N=numel(TT);
uuu=1;
Col=sum(TT,2); % 对列求和
Row=sum(TT,1); % 对行求和
Total=sum(Row); % 频数总和
for i=1:1:tt
for j=1:1:tt
xx(uuu,1)=sum((TT(i,j)-(Row(i)*Col(j))./Total).^2./( (Row(i)*Col(j)).
/Total));
uuu=uuu+1; % 计算统计量x2
end
end
xx=sum(xx)