推荐数学建模matlab方法整理 联系客服

发布时间 : 星期二 文章推荐数学建模matlab方法整理更新完毕开始阅读4ba3bd99763231126edb11fb

%将矩阵a按照第3列的降序排列,其他列将跟随着第3列 的变化,保持一一对应。 data = 1 3 2 7 6 5 4 9 8

sortrows(data,1) ans = 1 3 2 4 9 8 7 6 5

sortrows(data,-1) ans = 7 6 5 4 9 8 1 3 2

corrcoef

corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x与y的相关系数和y

与x的相关系数,两个是相等的。

Sim

sim函数用来运行Simulink模型。需要注意的是,用户无法控制其仿真过程(例如暂停、继续),一旦运行就会直到达到结束条件为止——这一点和通过模型窗口界面运行仿真不同。 调用格式:

[t,x,y] = sim(model,timespan,options,ut);

[t,x,y1, y2, ..., yn] = sim(model,timespan,options,ut); 输入参数:

model:模型的名字,用单引号括起来(注意不带扩展名.mdl); timespan:指定仿真时间范围,可以有几种情况:

标量tFinal,指定仿真结束时间。这种情况下开始时间为0; 两个元素的向量[tStart tFinal],同时指定开始时间和结束时间;

向量[tStart OutputTimes tFinal],除起止时间外,还指定输出时间点(通常输出时间t会包含更多点,这里指定的点相当于附加的点)。

options:指定仿真选项,是一个结构体,该结构体通过simset创建,包括模型求解器、误差控制等都可以通过这个参数指定(不修改模型,但使用和模型对话框里设置的不同选择)。 ut:指定外部输入,对应于根模型的Inport模块。

除第一个输入参数外,其他参数都可以用空矩阵([])来表示模型的默认值。 输出参数:

t:仿真时间向量;

x:状态矩阵,每行对应一个时刻的状态,连续状态在前,离散状态在后;

y:输出矩阵,每行对应一个时刻;每列对应根模型的一个Outport 模块(如果Outport模块的输入是向量,则在y中会占用相应的列数)。

y1, y2, ..., yn:把上面的y分开,每个yi对应一个Outport模块。

BP网络

1、BP网络构建 (1)生成BP网络

net ? newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

PR:由R维的输入样本最小最大值构成的R?2维矩阵。

[S1 S2...SNl]:各层的神经元个数。

{TF1 TF2...TFNl}:各层的神经元传递函数。

BTF:训练用函数的名称。

(2)网络训练

[net,tr,Y,E,Pf,Af] ? train(net,P,T,Pi,Ai,VV,TV)

(3)网络仿真

[Y,Pf,Af,E,perf] ? sim(net,P,Pi,Ai,T)

Vec2ind与ind2vec

vec2ind, “向量变索引”,

假设一个3*6的稀疏矩阵T(1,:)=[0 1 0 0 1 0];T(2,:)=[1 0 1 1 0 0];T(3,:)=[0 0 0 0 0 1],

通过vec2ind(T)将会得到什么?

因为通过矩阵知道T是6列的,

T =

0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1

vec2ind(T)得到的是1行6列的向量,该向量对应的元素分别是T中第1列到第6列中数字\对应的行号,因例子中的T矩阵,在第一列中第2行对应的是\则vec2ind(T)的第一个元素是2,同理,T中第二列中“1”在第1行,则vec2ind(T)的第二个元素是\,依次类推,T中第3列至第6列中“1”对应行数分别是“2\。 因此,vec2ind(T)=[2 1 2 2 1 3];

ind2vec则反过来理解即可,如一个索引适量A=[1 3 2 2 2 1 2 1],求ind2vec?

从A可以看出A是1行8列的(如果实在不知道,就用size(A)查看),从A中元素最大值\可以看出,索引对应的向量是3行的,还不理解?那就用最基本的方法,因A中元素对应的是行号,设B=ind2vec(A),意味着B(1,1),B(3,2),B(2,3),B(2,4), B(2,5), B(1,6),B(2,7),B(1,8)

对应的值是\,其余元素均为\即

1 0 0 0 0 1 0 1 B=ind2vec(A)= 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 神经网络中:

a = sim(net,P) 后运行的结果是:a =

(10,1) 1 %表示输入第1个测试样本数据,10号神经元获胜(我用的是hextop建立的竟争层)

(10,2) 1 %表示输入第2个测试样本数据,10号神经元获胜 (9,3) 1 %表示输入第3个测试样本数据,9号神经元获胜 (8,4) 1 %表示输入第4个测试样本数据,8号神经元获胜 (8,5) 1 。。。。。。 (29,6) 1 (40,7) 1 (50,8) 1 (60,9) 1 (60,10) 1

用ac = vec2ind(a) 后可得: ac =

Columns 1 through 10

10 10 9 8 8 29 40 50 60 60

这样可以更清晰地看出来从第一个样本到最后一个样本,分别是那个神经元获胜。