matalb樣本數據去中心化
㈠ 給出一組數據,如何用MATLAB去預測將來的數據。
這樣:
x=[1 3 5 6 8 9 10 11 12 14 15 17 19 21 23 25];
y=[10 20 42 60 73 79 80 78 73 64 56 71 51 42 41 40];
plot(x,y,'ro');
p=polyfit(x,y,4);%於是擬合出的曲線就是p(1)x^4+p(2)x^3+p(3)x^2+p(4)x+p(5),想擬合成其它次數的多項式只需將4改為相應的次數即可
f=poly2sym(p);
xinterp=[2 4 7 13 16 18 20 22 24];
yinterp=subs(f,xinterp);
hold on;
plot(xinterp,yinterp,'o');
ezplot(f,[0,30])
(1)matalb樣本數據去中心化擴展閱讀:
注意事項
函數命令為:
a=polyfit(x,y,m) % x,y為對應的自變數,m為需要擬合的最高次冪
y=polyval(a,x); %根據擬合的函數得出x對應的因變數的值
函數表達形式為:f(x)=a1*x^m+...+am*x+a_m+1
polyfit(x,y,n)其中:x, y為已知數據點向量, 分別表示橫、縱坐標,n為擬合多項式的次數, 結果返回m次擬合多項式系數, 從高次到低次存放在向量p中.參數p為擬合多項式 y=a1x^n+...+anx+a,共n+1個系數。
示例:
%多項式擬合
x = (0: 0.1: 7)';
y = sin(x);
p = polyfit(x,y,3) %p為擬合後的多項式系數
z=polyval(p,x);
plot(x,y,'r',x,z,'b')
其中p為擬合後的多項式系數,運行結果為:
p =0.0736 -0.7095 1.5250 -0.0296
㈡ 如何用matlab實現 在樣本中剔除一個點
你想怎麼抽取?隨機抽取的話產生5個隨機整數,控制在你要的數據范圍內。比如從100個樣本中抽取5個,產生其序號為a=round(100*rand(1,5))。
㈢ 想知道怎麼用matlab做數據的無量綱化
1. min-max歸一化
該方法是對原始數據進行線性變換,將其映射到[0,1]之間,該方法也被稱為離差標准化(但是請注意,網上更多人喜歡把z-score稱為標准化方法,把min-max稱為歸一化方法,然後在此基礎上,強行給標准化(z-score)與歸一化(min-max)劃條界線,以顯示二者之間的相異性。對!二者之間確實有很大的不同,這個我們後面會有介紹,但是這兩個方法說到底還都是用來去除量綱的,都是無量綱化技術中的一員而已,所以,請不要糾結標准化與歸一化這兩個概念了)。
上式中,min是樣本的最小值,max是樣本的最大值。由於最大值與最小值可能是動態變化的,同時也非常容易受雜訊(異常點、離群點)影響,因此一般適合小數據的場景。此外,該方法還有兩點好處:
1) 如果某屬性/特徵的方差很小,如身高:np.array([[1.70],[1.71],[1.72],[1.70],[1.73]]),實際5條數據在身高這個特徵上是有差異的,但是卻很微弱,這樣不利於模型的學習,進行min-max歸一化後為:array([[ 0. ], [ 0.33333333], [ 0.66666667], [ 0. ], [ 1. ]]),相當於放大了差異;
2) 維持稀疏矩陣中為0的條目。
使用方法如下:
from sklearn.preprocessing import MinMaxScaler
x = np.array([[1,-1,2],[2,0,0],[0,1,-1]])
x1 = MinMaxScaler().fit_transform(x)
㈣ 如何在matlab中求非中心卡方分布的非中心化參數
如何在matlab中求非中心卡方分布的非中心化參數
中心卡方分布是標准正態分布的平方和,非中心卡方分布是均值為a,方差為b2的正態分布隨機變數的平方和;求的話看這兩個連接好了
㈤ matlab 中輸入一組數據,8000樣本點,20個點一取樣,變成400*18的怎麼編寫
用randperm 我給你舉個例子吧:>> b=1:10b = 1 2 3 4 5 6 7 8 9 10>> a=randperm(10)a = 1 9 10 8 3 7 5 2 6 4>> b(a(1:5))ans = 1 9 10 8 3
㈥ MATLAB 數據歸一化(除去里邊的空值-9999)
假設你的數據存在矩陣a當中,下面的程序應該能符合你的要求
a(find(a==-9999))=[];
a=mapminmax(a,0,1)
㈦ 如何使用MATLAB編程實現實驗數據的處理
數據處理也就包括標准化,歸一化處理,很簡單,我給你個例子,你可以仿照學習下:
%% 該代碼為基於帶動量項的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
㈧ Fastica 的源程序啊,matlab,包括數據的預處理(中心化和白化),能不能發給我一份非常感謝!
#include<stdio.h>
#include<string.h>
void reversestring(char s[],int n);
void main(){
int i,n;
char p[]="hansunguniversity";
n = strlen(p);
reversestring(p,n);
for(i=0;i<n;i++)
printf("%c",p[i]);
printf("\n");
}
void reversestring(char s[],int n)
{
int length=n;
char temp;
for(int i=0;i<length/2;i++)
{
temp=s[i];
s[i]=s[length-i-1];
s[length-i-1]=temp;
}
㈨ 用matlab對數據進行去噪,具體步驟是什麼請幫幫忙,急!!
中值去噪還是均值去噪?
首先選取一個N*N的窗口,比如
3*3,對這個窗口內的灰度值進行排序,取中間的那個值,然後在該窗口內所有灰度值統一用這個中值
均值就是將窗口內灰度值相加求平均值,窗口內所有的灰度值統一用這個均值
要比較結果的話,求峰值信噪比
一般來講,5*5的窗口要比3*3的好。我去年的畢業論文就是寫這個。
另外你去噪的圖像必須是標準的,最好是512*512