擬合方程不是次數(shù)越高越好。

創(chuàng)新互聯(lián)專注于遂昌企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),成都做商城網(wǎng)站。遂昌網(wǎng)站建設(shè)公司,為遂昌等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
用分段樣條函數(shù)也可以。
必要時(shí)要?jiǎng)h去一些壞的點(diǎn)子。
時(shí)序離散數(shù)據(jù)可以用移動(dòng)窗修勻。
S域不好編寫,你必須離散化傳遞函數(shù),用Z變換轉(zhuǎn)換為對應(yīng)的傳遞函數(shù),然后用c寫就可以了。
既然是零階保持輸入,那手算的時(shí)候應(yīng)該也有零階保持器的吧。
既然離散系統(tǒng),那么遞推關(guān)系式也許可以吧。但是自己用C語言寫,估計(jì)很麻煩,既然有Matlab就用Matlab算啊。
對于含有零階保持器的離散系統(tǒng)的傳遞函數(shù)你可以上網(wǎng)搜,也可以參考自動(dòng)控制原理的書籍啊! 至于Matlab使用的方面,實(shí)現(xiàn)ABCD可調(diào)節(jié)也是可以的,你可以搜索Matlab里關(guān)于syms或者input函數(shù)的使用。 也可以嘗試學(xué)習(xí)GUI的編程。
百度一下
有C++的解題思路和代碼。
思路可以借鑒。
離散化:將a數(shù)組的備份temp[]排序,然后把不重復(fù)的值都弄到X數(shù)組中,接下來開始挨著求出a中的每一個(gè)元素在X中的位置,用index記錄。
這樣每次到a[i],index[i]中記錄的就是a[i]在X[]中的位置。
尺取法:
通過觀察發(fā)現(xiàn),所求序列的第一個(gè)一定是在序列中只出現(xiàn)1次的,不然就可以直接把這個(gè)舍去了。
設(shè)置s,e分別為所求序列的起始和結(jié)束。
e每次都++,然后當(dāng)序列中元素個(gè)數(shù)==非重復(fù)元素個(gè)數(shù)len時(shí),要用minn記錄此時(shí)序列長度。然后再s++(直到X[index[s]]==1)。
最后到e不小于n然后結(jié)束。
#includecstdio
#include?iostream
#includemap
#includeset
#includealgorithm
#include?cstring
#define?MAXN?1000005
using?namespace?std;
int?n;
int?cou;
int?a[MAXN];//所有元素
int?X[MAXN];//不重復(fù)元素
int?temp[MAXN];//臨時(shí)
int?inde[MAXN];//存儲(chǔ)a[]中每一個(gè)元素在X中的下標(biāo)
int?bin_search(int?cou,int?aa){
int?s=0,e=cou-1;
int?mid;
while(s=e){
mid=(s+e)1;
if(X[mid]==aa){
return?mid;
}else{
if(aaX[mid]){
e=mid-1;
}else{
s=mid+1;
}
}
}
}
void?discrete(){
cou=1;
sort(temp,temp+n);
X[0]=temp[0];
for(int?i=1;in;i++){
if(temp[i]!=temp[i-1]){
X[cou++]=temp[i];
}
}
for(int?i=0;in;i++){
inde[i]=bin_search(cou,a[i]);
}
}
int?main()
{
int?t;
scanf("%d",t);
while(t--){
int?minn=1000005;
scanf("%d",n);
for(int?i=0;in;i++){
scanf("%d",a[i]);
temp[i]=a[i];
}
discrete();
memset(X,0,sizeof(X));
int?len=cou;
int?s=0,e=0;
int?number=0;
while(en){
if(X[inde[e]]==0)?number++;
X[inde[e]]++;
while(X[inde[s]]=2){
X[inde[s]]--;
s++;
}
if(number==len){
minn=min(minn,e-s+1);
/*if(X[inde[s]]==1)*/?number--;
X[inde[s]]--;
s++;
}
e++;
}
printf("%d\n",minn);
}
return?0;
}
在循環(huán)中使用rand函數(shù)產(chǎn)生隨機(jī)數(shù),若想每次運(yùn)行時(shí)產(chǎn)生不同的隨機(jī)數(shù),在程序開始使用srand函數(shù)置一下隨機(jī)數(shù)種子。
傳遞函數(shù)G(s)要離散化成G(z),然后變成差分方程,然后就可以用c語言編程了~
比如Y(S)/U(S)=G(s)=1/(a*s+1);
用零階保持器,你的采樣周期是Ts(比如你的控制函數(shù)是在中斷服務(wù)函數(shù)里實(shí)現(xiàn)的,那Ts就是你的中斷周期),得到Y(jié)(z)/U(z)=G(z)=(1-z^(-1))*Z[G(s)/s]=[1-e^(-Ts/a)]/[z-e^(-Ts/a)]={[1-e^(-Ts/a)]*z^(-1)}/[1-e^(-Ts/a)*z^(-1)];
所以得到差分方程:y(k)=e^(-Ts/a)*y(k-1)+ (1-e^(-Ts/a))*u(k-1),k表示當(dāng)前時(shí)刻。
新聞名稱:c語言函數(shù)離散化,離散函數(shù)的特征函數(shù)
分享網(wǎng)址:http://chinadenli.net/article36/heohsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、ChatGPT、云服務(wù)器、Google、網(wǎng)站收錄、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)