如何使用MATLAB编程实现实验数据的处理

作者&投稿:仉将 (若有异议请与网页底部的电邮联系)
如何用matlab处理实验数据~

在图象处理中,自相关和互相关函数的定义如下:
设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;
设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。

输入数据
做数据曲线拟合,当然该有数据,本经验从以如下数据作为案例。
添加数据到curve fitting程序
这一步就是将你要拟合的数据添加到curve fitting程序中,同时给你拟合的曲线命名。
选择曲线拟合的方法类型
常见的拟合曲线有多项式的、指数的、对数的等等。curve fitting程序提供了很多的方法。你可以根据自己的数据具体选择。
选择好方法后,按照提供的公式选择具体的选项
本文的数据近似为线性的,我们选择多项式拟合的一阶方法。
拟合结果查看
拟合后,curve fitting会给你具体的函数表达式,你可以将他给出的参数的值带入你选择的方法中。
结果说明
在结果中,不仅可以看到函数的表达式,同时他还给出了95%置信区间的参数值,以及拟合好坏的一些指标,如:
SSE:
R-square:
Adjusted R-square:
RMSE:
画出图像
虽然在curve fitting程序有自带的图像显示,但是一般最好将拟合结果显示到单独的图像窗口。
保存结果
曲线拟合结束后,你可以保存你的拟合结果。选择你保存的路径即可。

数据处理也就包括标准化,归一化处理,很简单,我给你个例子,你可以仿照学习下:
%% 该代码为基于带动量项的BP神经网络语音识别
%% 清空环境变量
clc
clear

%% 训练数据预测数据提取及归一化

%下载四类语音信号
load data1 c1
load data2 c2
load data3 c3
load data4 c4

%四个特征信号矩阵合成一个矩阵
data(1:500,:)=c1(1:500,:);
data(501:1000,:)=c2(1:500,:);
data(1001:1500,:)=c3(1:500,:);
data(1501:2000,:)=c4(1:500,:);

%从1到2000间随机排序
k=rand(1,2000);
[m,n]=sort(k);

%输入输出数据
input=data(:,2:25);
output1 =data(:,1);

%把输出从1维变成4维
for i=1:2000
switch output1(i)
case 1
output(i,:)=[1 0 0 0];
case 2
output(i,:)=[0 1 0 0];
case 3
output(i,:)=[0 0 1 0];
case 4
output(i,:)=[0 0 0 1];
end
end

%随机提取1500个样本为训练样本,500个样本为预测样本
input_train=input(n(1:1500),:)';
output_train=output(n(1:1500),:)';
input_test=input(n(1501:2000),:)';
output_test=output(n(1501:2000),:)';

%输入数据归一化
[inputn,inputps]=mapminmax(input_train);

%% 网络结构初始化
innum=24;
midnum=25;
outnum=4;

%权值初始化
w1=rands(midnum,innum);
b1=rands(midnum,1);
w2=rands(midnum,outnum);
b2=rands(outnum,1);

w2_1=w2;w2_2=w2_1;
w1_1=w1;w1_2=w1_1;
b1_1=b1;b1_2=b1_1;
b2_1=b2;b2_2=b2_1;

%学习率
xite=0.1
alfa=0.01;

%% 网络训练
for ii=1:10
E(ii)=0;
for i=1:1:1500
%% 网络预测输出
x=inputn(:,i);
% 隐含层输出
for j=1:1:midnum
I(j)=inputn(:,i)'*w1(j,:)'+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end
% 输出层输出
yn=w2'*Iout'+b2;

%% 权值阀值修正
%计算误差
e=output_train(:,i)-yn;
E(ii)=E(ii)+sum(abs(e));

%计算权值变化率
dw2=e*Iout;
db2=e';

for j=1:1:midnum
S=1/(1+exp(-I(j)));
FI(j)=S*(1-S);
end
for k=1:1:innum
for j=1:1:midnum
dw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));
db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));
end
end

w1=w1_1+xite*dw1'+alfa*(w1_1-w1_2);
b1=b1_1+xite*db1'+alfa*(b1_1-b1_2);
w2=w2_1+xite*dw2'+alfa*(w2_1-w2_2);
b2=b2_1+xite*db2'+alfa*(b2_1-b2_2);

w1_2=w1_1;w1_1=w1;
w2_2=w2_1;w2_1=w2;
b1_2=b1_1;b1_1=b1;
b2_2=b2_1;b2_1=b2;
end
end

%% 语音特征信号分类
inputn_test=mapminmax('apply',input_test,inputps);

for ii=1:1
for i=1:500%1500
%隐含层输出
for j=1:1:midnum
I(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end

fore(:,i)=w2'*Iout'+b2;
end
end

%% 结果分析
%根据网络输出找出数据属于哪类
for i=1:500
output_fore(i)=find(fore(:,i)==max(fore(:,i)));
end

%BP网络预测误差
error=output_fore-output1(n(1501:2000))';

%画出预测语音种类和实际语音种类的分类图
figure(1)
plot(output_fore,'r')
hold on
plot(output1(n(1501:2000))','b')
legend('预测语音类别','实际语音类别')

%画出误差图
figure(2)
plot(error)
title('BP网络分类误差','fontsize',12)
xlabel('语音信号','fontsize',12)
ylabel('分类误差','fontsize',12)

%print -dtiff -r600 1-4

k=zeros(1,4);
%找出判断错误的分类属于哪一类
for i=1:500
if error(i)~=0
[b,c]=max(output_test(:,i));
switch c
case 1
k(1)=k(1)+1;
case 2
k(2)=k(2)+1;
case 3
k(3)=k(3)+1;
case 4
k(4)=k(4)+1;
end
end
end

%找出每类的个体和
kk=zeros(1,4);
for i=1:500
[b,c]=max(output_test(:,i));
switch c
case 1
kk(1)=kk(1)+1;
case 2
kk(2)=kk(2)+1;
case 3
kk(3)=kk(3)+1;
case 4
kk(4)=kk(4)+1;
end
end

%正确率
rightridio=(kk-k)./kk

请具体点,进行哪方面的实验数据处理


...MATLAB,pspice,希望高手指点着几款软件如何用?
2. proteus是仿真单片机及其外围器件的有效工具,可以做原理图布图、代码调试到单片机与外围电路协同仿真,是将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台;3. Simulink不是仿真软件,它只是MATLAB软件下面的一个子仿真模块,主要能仿真电力系统,电机和自动控制等方面的模型;4. MATLAB是...

大一新生如何学习matlab
--- 建议你比较系统地学习matlab所以推荐一本叫精通matlab 7.0的书 主编是王正林 《matlab在数学方面的应用》作者:何正风 出版社:清华大学出版社 主要讲高数实验和建模等方面的应用方法和使用技巧,实用性比较高,一般大学里面都有这本教材。这本是我上建模选修课用的,感觉确实不错。《精通matlab...

如何学习matlab的建议
如果还不能搞定的话就可以参考matlab里的document了,里面函数说明及例子一应俱全的,依葫芦画瓢总该不难的吧。我为了节省空间都没有安装document,自己要用的函数参照help一般都能搞定!大家要习惯看英文的帮助的3.重复一下别人的建议,充分利用搜索引擎。google和baidu可以找到很多有参考价值的网页,尤其...

matlab中y 是什么意思
无论在何种情况下,y都是可以修改和控制的。通过修改变量x或参数,可以改变y的计算结果。因此,对于任何一个使用matlab的用户来说,理解y的含义和作用是非常重要的。首先,需要了解y变量所代表的意义,才能对y进行操作。对于因变量或响应变量y,在matlab中,有很多内置函数可以用来计算和控制y的数值和表现...

怎么用matlab旋转曲线?
没有太多的使用限制。关键有两点:第一、旋转轴两边都有曲线的时候,先要将旋转轴左边的那一部分镜像到右边,整合起来计算旋转部分。如下图,需要旋转的是右边红加绿的块。至于其曲线分段什么的,就得分段计算了。第二、无论何时都要计算实际旋转的那一部分的高度。这个2πxf(x) dx的f(x),不如...

如何用matlab建立动态模型
File-->New-->M-File,编写M文件,和c语言差不多,函数定义:function [out]=function_name(in)……end 判断语句:if x>3 ……end 循环有for while for i=1:10 ……end while i<10 ……end 更详细可以在网上搜索一些书刊

怎么在matlab中画出xoy平面上的曲线?用plot3函数。。
有mesh何surf两种命令来画三维曲面,它们使用的场合不同。前者是当z轴是x和y的显式函数时,后者是x,y,z中某个为其他2个的函数。mesh函数 这里用柱面坐标表示为 r2+z2=1x = sqrt(1-z2)cosθ, x = sqrt(1-z2)sinθ;执行matlab指令:>> [theta, Z] = meshgrid((0:0.1:2)*pi, (...

matlab实验,急啊!!!
ode45求解。http:\/\/zhidao.baidu.com\/question\/238873128.html#here 追问 这个我们要求用MATLAB做,帮帮忙吧 回答 Author:wacs5 Date:20110317(YYYYMMDD)针对:http:\/\/zhidao.baidu.com\/question\/238873128.html#here 问题提出:在正方形的四个顶点各有一个人,在某一时刻,四个人同时出发以匀速按顺...

用matlab表示分段函数取值求和
详情见下。1.语法一:function[输出参数列表]=函数名[输入参数列表](参数用逗号分离)例如:function[y,z]=myfunction(x)%这里x就是输入参数,y和z就是输出的参数(若无global声明,x、y、z为局部变量)。注意:命名:保存参数名的文件命名要与函数名相同,否则以文件名为函数名来调用;函数名不...

这个matlab程序怎么编?(设计低通滤波器)
1.对同一个信号,不同点数FFT观察到的频谱图有何区别? 2.序列加长后FFT与原序列FFT的关系是什么,试推导其中一种关系。 3.用傅立叶级数理论,试说明正弦信号频谱和方波信号频谱之间的关系。 3 IIR滤波器设计实验 3.1 实验目的 1.通过实验加深对IIR滤波器基本原理的理解。 2.学习编写IIR滤波器的MATLAB仿真程序。

东莞市17369966687: 怎样用matlab产生一组实验数据,并试求这组数据的3阶拟合多项式 -
皮段复方: 编写程序如下: x = (0: 5); y = rand(1,6); p = polyfit(x,y,3)%p是多项式系数 f = polyval(p,x); plot(x,y,'o',x,f,'-') 测试通过,祝顺利.

东莞市17369966687: 怎么在matlab图像中提取实验数据?? -
皮段复方: 是什么数据?如果是图像的灰度值,用以下命令就可以: >>A=imread('D:\Lena.bmp'); %读取图像Lena,图像存放在D盘根目录下 >>A(3,5) %得到坐标为(3,5)处图像的灰度值并显示 ans =160

东莞市17369966687: 怎么用matlab 写如下的程序 -
皮段复方: n=20000;%n次实验cnt=0;%计算数器,满足条件的实验次数 x=ceil(6*rand(n,2));%产生随机序列 for i=1:n x1=x(i,1);%第一个骰子点数 x2=x(i,2);%第二个骰子点数 if (x1+x2>6 && x1>x2) cnt=cnt+1; end end p=cnt/n答案应当是1/4,用随机数的话,应当也在这个值上下波动. 理论上讲,实验次数越多,越精确

东莞市17369966687: 实验测得一组脉冲信号,如何用MATLAB求得脉冲的个数? -
皮段复方: 获得一个数据文件(*.mat)为某次实验中测得的脉冲信号(第一行数据为时间,第二行数据为脉冲信号),试统计数据文件中脉冲的个数.

东莞市17369966687: 【数学】在matlab环境中如何实现? -
皮段复方:在matlab命令窗口输入以下两行代码,就是你想要的结果, x=normrnd(4,2,1,1000); hist(x(:),10); 其中normrnd函数为正态分布随机数产生函数,其各输入参数分别为期望、标准差、样本行数以及样本列数.为了更直观的观察实验结果,这里产生了1000个样本,要是只需要20个,把1000改为20即可. hist函数为统计直方图函数,输入参数x为样本,10表示将样本划分为10个区间统计频数.该函数直接绘出统计直方图,直方图的轮廓即为近似的概率密度曲线. 显然,以上产生的直方图中间大,两头小,正是样本服从正太分布的体现. 希望对你有所帮助,祝学习进步!

东莞市17369966687: 怎么用matlab编写程序 -
皮段复方: matlab是基于矩阵运算的 适合仿真和数据量大的复杂运算 效率是一般界面程序不能比的 而且有很多方针模型在里面..可以直接调用

东莞市17369966687: matlab怎么实现数据采集和存储 -
皮段复方: 用matlab实现数据采集的方法 我们在这里介绍两种共同学习参考.① 直接利用MATLAB数据采集箱中提供的的函数命令进行采集,即wavrecord .wavrecord是利用Windows 音频输入设备记录声音, 其调用格式为: y=wavrecord(n ,fs ,ch ,dtype...

东莞市17369966687: 举个matlab运用在实验中的例子
皮段复方: 可以用matlab分析样图信息:Guidelines for using these images: Please use the associated caption and credit the image "Courtesy of The MathWorks, Inc." EKG Using adaptive noise cancellation in Simulink and the Signal Processing Blockset...

东莞市17369966687: 《数学实验》MATLAB编程:找出3到100之间所有的素数
皮段复方: 这是最传统的做法 function a=question(n) a=[]; for i=2:n k=0; for j=2:i-1 if ~mod(i,j) k=1; break; end end if ~k a=[a,i]; end end 这是另外一种做法 function a=question(n) a=2:n;b=zeros(1,n-1); for i=2:sqrt(n) b(i*(2:(n/i))-1)=i*(2:(n/i)); end a=a(~b);

东莞市17369966687: matlab怎么用? -
皮段复方: 自编程的话,在M文件中进行,编好程序后,点Debug按钮可试运行程序,运行结果在Command Windows 窗口中查看.也可直接在Command Windows 窗口中敲入函数并 回车运行.这是最简单的用法了,其他的用法就看你慢慢琢磨发展.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网