matlab数据处理

作者&投稿:布贪 (若有异议请与网页底部的电邮联系)
MATLAB数据拟合处理大量数据的实例分析~

给你用一个一元情况的吧;
>>x=-1:0.2:1;
>>y=[0.841470984807897 -0.717356090899523 -0.564642473395035 -0.3894183423086...
-0.198669330795061 0 0.198669330795061 0.38941834230865 0.564642473395035 ... 0.717356090899523 0.841470984807897];
如果要你想拟合成一个2次多元函数
命令为
>>p=polyfit(x,y,2)
就可以得到拟合多项式的系数。
还可以通过做出原图和拟合后的效果图,见图1,就可以比较拟合效果,命令如下:
>>fval=polyval(p,x);
>>plot(x,fval),hold on
>>plot(x,y),hold off
当然还有一个更为实用的方法,就是直接的应用命令polytool;
>>polytool(x,y,n)
n是你想最高次拟合为多少,如果是5,就输入>>polytool(x,y,5)
得到的是一个含有偏差的拟合效果图,其中图形中的degree代表可以改变拟合次数。见图2

数据处理也就包括标准化,归一化处理,很简单,我给你个例子,你可以仿照学习下:
%% 该代码为基于带动量项的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

%假设你的蛇形数据储存在向量x中
len=length(x);
%向量max用于存储搜索到的波峰值
%由于只需要第二、三、四个波峰值
max=zeros(1,3);
pt=1;%pt自动指向max的下一个元素
i=1;
j=i+1;
k=j+1;
cnt=0;%cnt用于记录检索到的波峰数
while(cnt<=3)
if(x(i)<x(j))
if(x(j)>x(k))
cnt=cnt+1;
if cnt>1
max(pt)=x(j);
pt=pt+1;
end
end
end
i=i+1;
j=j+1;
k=k+1;
end
average=sum(max)/3;
disp(max);
disp(average);

找波峰值,从图形上看应该是极大值,先对函有选举权取负,再用fminbnd取最小,得到峰值,再还原为正。取出来后,求平均就容易了。


如何用matlab处理excel文件中的数据
用matlab处理excel文件中的数据方法如下:1、首先生成一个带有数据的excel文件,代码如下图所示 2、编制一个函数,其功能是处理excel工作表中的数据的,在这种情况下,设置范围为[-3,3]。具体的函数代码如下图所示:3、向excel文件 myExample.xlsx中添加一些数据,具体代码如下图所示,可以看到文件 my...

matlab如何读取一行数据,从而进行处理?
以取filein中的第line行写入fileout中的程序为例:1、首先输入下方的代码:function dataout=dataread(filein,fileout,line)fidin=fopen(filein,'r');fidout=fopen(fileout,'w');nline=0;while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行 2、然后输入下方的...

如何用matlab处理excel文件中的数据?
matlab读取excel文件可用xlsread函数,向excel中写数据可用xlswrite函数。注意:matlab不识别中文,读写的文件中最好不含有中文。举例说明如下:1、matlab读取excel文件数据:bb = xlsread('c:\\feature.xls', 'A0:A40');其中:c:\\feature.xls为文件存放的地址;A0:A40为将要读取的单元格的范围;bb为...

MATLAB代码对一组数据用最小二乘法处理。急急急~
MATLAB代码对一组数据用最小二乘法处理。急急急~ 10 1.设三只被测电阻分别为x1,x2,x3。先用普通万用表测得组合量值记入下表:组合量X1X2X3X1+X2X2+X3X1+X2+X3测得值0.0520.5520.1160.6040.6680.7202.用最小二乘法求各电阻测量的估计值及... 1. 设三只被测电阻分别为x1,x2,x3。先用普通万用...

matlab 的plp是怎么回事呀?
例如,在PLP的一个模块中,学生可能会面临一个数据分析和可视化的项目任务。他们需要利用MATLAB的数据处理功能来清洗和整理数据,然后运用MATLAB的图形绘制功能来生成可视化的报告。通过完成这样的项目任务,学生不仅能够学习到MATLAB的数据处理和图形绘制技能,还能够体验到这些技能在实际应用中的价值和意义。PLP...

matlab将图像转化为矩阵怎么操作?
它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式...

matlab与python的区别有哪些
2、应用不同 python的语法规则比matlab简单,容易学习和使用。python采用缩进方式来标识代码块,而matlab则使用大括号。python拥有大量的第三方库,例如NumPy、Pandas和SciPy等,这些库可以用来处理数据、进行科学计算和图像处理等。matlab也提供了很多工具箱和函数库,例如统计工具箱、信号处理工具箱和神经网络...

想知道怎么用matlab做数据的无量纲化?
1. min-max归一化    该方法是对原始数据进行线性变换,将其映射到[0,1]之间,该方法也被称为离差标准化(但是请注意,网上更多人喜欢把z-score称为标准化方法,把min-max称为归一化方法,然后在此基础上,强行给标准化(z-score)与归一化(min-max)划条界线,以显示二者之间的...

MatLab的特点及应用领域?
MatLab的特点 1、高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2、具有完备的图形处理功能,实现计算结果和编程的可视化;3、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4、 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量...

MATLAB数据标准化处理
用zscore,标准化的目的是:使得平均值为0,标准差为1,这样可以使不同量纲的数据放在一个矩阵.>> A=magic(4)A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> [Z,MU,SIGMA] = zscore(A)Z = 1.3770 -1.2509 -1.0585 0.82...

普洱市17383022656: matlab处理数据 -
廖叔适迪: 参考代码 a = [0; A(:,1)]; b = [A(1,2); A(:,2)]; ind = [1; find(diff(b)~=0); length(b)]; B = [a(ind(1:end-1)) a(ind(2:end)) b(ind(2:end))] 运行结果 对于第一个文件的运行结果:B = 0 100 1 100 120 2 120 160 1 160 220 2 220 380 1对于第二个文件的运行结...

普洱市17383022656: 如何用matlab处理excel文件中的数据 -
廖叔适迪: 首先生成一个带有数据的excel文件,代码如下图所示: 如何用matlab处理excel文件中的数据? 编制一个函数,其功能是处理excel工作表中的数据的,在这种情况下,设置范围为[-3,3].具体的函数代码如下图所示: 如何用matlab处理excel文件...

普洱市17383022656: matlab数据处理 -
廖叔适迪: 展开全部%假设你的蛇形数据储存在向量x中 len=length(x);%向量max用于存储搜索到的波峰值%由于只需要第二、三、四个波峰值 max=zeros(1,3); pt=1;%pt自动指向max的下一个元素 i=1; j=i+1; k=j+1; cnt=0;%cnt用于记录检索到的波峰数 while(cnt<=3) if(x(i) if(x(j)>x(k)) cnt=cnt+1; if cnt>1 max(pt)=x(j); pt=pt+1; end end end i=i+1; j=j+1; k=k+1; end average=sum(max)/3; disp(max); disp(average);

普洱市17383022656: matlab 数据处理 -
廖叔适迪: 在simulink/simpowersystems里有一个控件叫做powergui,你用它就可以画出频谱图,具体使用方法参考相关帮助.

普洱市17383022656: 求用matlab编写一个数据处理的通用程序 -
廖叔适迪: n = 4; p = (0:9) .^ n; %预先算09n tempStr = '0' * ones(1, n); for x = (10^(n-1) : (10^n - 1)) digits = num2str(x, '%d') - tempStr; s = sum(p(digits + 1)); if s == x fprintf('%d\n', x); end end 程序精度高应该能算8位或者9位

普洱市17383022656: 如何用MATLAB处理大数据 -
廖叔适迪: 那怎么用matlab处理rsoft数据 比如,你的文件名为A.txt 确保A中是行或列矩阵 现在导入 x=load('A.txt'); %x是行或列矩阵 y=sin(x) % 这里加入公式是y=sin(x),这个你根据自己的可以换.然后到处y即可,也可以作图.

普洱市17383022656: Matlab数据处理 -
廖叔适迪: 假设2113A=[x1 x2],x1为第一列5261数据 ,x2为第二列4102数据,则应把x2=0时对于的1653x1保留i=1,k=0while i<=1000if A(2:i)=0k=k+1;B(k)=A(1:i)endi=i+1;endB %得到第专一列属只剩下900个

普洱市17383022656: Matlab 数据处理求拟合参数 -
廖叔适迪: 如果你说的很复杂的方程(其实应该是一个函数)本身是线性的或者可以化为线性的,那么就用线性拟合;实现线性拟合的方法有两种:1、polyfit命令;2、将问题转化为线性方程组,然后用做出命令;如果你说的很复杂的方程(其实应该是一个函数)没办法化为线性的,那么可以用非线性拟合来做,命令为:lsqnonlin和lsqcurvefit,这两个的内部求解原理是一样的,只是用法不一样,你可以参考一下帮助系统.

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

普洱市17383022656: matlab处理excel数据 -
廖叔适迪: clc;clear A=xlsread('E:/data/mydata.xlsx','Sheet1','A1:B15');%假设数据放在E:/data/mydata.xlsx的Sheet1的A1:B15区域. a=A(:,1);b=A(:,2); k=find(diff(b)~=0); ind=a(k);n=length(ind); B(n+1,3)=0; if b(1)==1 B(:,1)=[0;ind]; B(:,2)=[ind;a(end)]; B(1:2:...

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