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