异想天开

What's the true meaning of light, Could you tell me why

matlab学习

日期:2016-06-10 08:20:02
  
最后更新日期:2016-10-16 07:03:10
对于熟悉一门编程语言的人来说,熟悉一门新的软件语言,并不会吃力。语法规则和概念也大同小异。matlab也是如此。

1.
假设你需要一个正态分布,那么:
pd = makedist('Normal','mu',10,'sigma',1);
x = 0:0.1:20
plot(x,pdf(pd,x))
即可创建一个均值为10,方差为1的正太分布。pdf为概率密度函数,plot为画点函数。相信函数参数的意思也早猜出来了。分布还有另外一个函数,cdf,查看累计概率分布。

2.文件打开
跟c语言类似,二进制文件和文本文件,以及matlib自带保存环境的mat文件。与文件相关的函数有:
文本文件: save, load 数值型。 照样也可以使用fprintf和fscanf。
[code lang="cpp"]
save('X.txt','X','-ascii');
save('Y.txt','Y','-ascii');
save('Z.txt','Z','-ascii');

X = load('X.txt')
Y = load('Y.txt')
Z = load('Z.txt')
surf(X,Y,Z)

[/code]

3.神经网络
构造拟合误差为正态分布,y = x的神经网络
[code lang="cpp"]
% [x,t] = simplefit_dataset;
x = 0:0.1:20
t = randn(size(x))
t = t + x

net = feedforwardnet(10);
net.trainParam.epochs = 10000;
net.trainParam.showWindow = 0;
net = train(net,x,t);
%view(net)
y = net(x);
plot(x,t,'g',x,y,'c*');
%perf = perform(net,y,t)
[/code]

4. z = xy曲面
[code lang="cpp"]
x = 0:0.1:10
y = 0:0.1:10

x = ones(size(x))' * x
y = y' * ones(size(y))

t = randn(size(x))
t = y .* x

surf(x,y,t)
[/code]
神经网络求解:
[code lang="cpp"]
x = 0:1:10
y = 0:1:10

x = ones(size(x))' * x
y = y' * ones(size(y))

%t = randn(size(x))
t = y .* x

p = [x(:)'; y(:)'];
%p = [-1 -1 2 2; 0 5 0 5];
%t = [-1 -1 1 1];

net = feedforwardnet(10,'trainlm');
net.trainParam.epochs = 10000;
net.trainParam.showWindow = 1;
tt = t(:)'
net = train(net,p,tt);
%预测数据
z = net(p);
save('mynet.mat','net')

%预测数据
plot3(x(:)',y(:)',z,'*');
%原数据
surf(x,y,t)
[/code]
save将训练结果保存,下次可以直接load进来