㈠ 如何用c語言實現AVR單片機電壓峰值測量
有硬體軟體兩種方式,硬體的網上搜峰值檢波培孫禪電路,軟體的就用AD口快速採集配塵,找到一定時間內的最大值,即為峰值凱陪。
㈡ c語言怎麼獲取波形脈尖
findpeaks函數搜檔塵可以獲得峰蠢碰值位置。
1、a=findpeaks(data),獲得data的局部峰值,此方法即峰值點大於相世禪鄰兩點即可。
2、a,b=findpeaksd(ata),可以返回峰值位置,峰值位置賦予給b。
㈢ 您好:我想問你一下,一組數據有多個峰值點,用matlab畫出的圖上可以看出,怎麼用c語言或c++實現演算法
說句實話,看你要什麼樣的峰值了,如果是只要是念賣峰值就行的,可以找到最大值就行了讓高歲。如果是找坦睜到一段圖像中的峰值的話,就需要先平滑一下圖像了。用窗口過濾一下,對你幫助估計不大,但是可以參考一下思路,平滑後就好一些了。。
㈣ 請求高手幫忙!!C語言編程序
找個威客網站掛上吧 20積分肯定沒人給你搞得
㈤ 快速查找二維數組的所有峰值,c語言實現最好,python也可以,最好能實現濾波。
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#include<malloc.h>
#definemaxsize6//每個波形數據最大採集個數默認6
typedefstructarray1
{
int*data;
structarray1*next;
}ARR1;
ARR1*addNewArr(ARR1*arrHead,ARR1*arrTail);//插入一組波形數據節點返回尾節點
intfindMaxF(ARR1*arrHead);//查找最大峰值
intremoveMinF(ARR1*arrHead);//移除最小峰值數據組返回最小峰值
voidprintfArr(ARR1*arrHead);//列印數據鏈表
intmain()
{
ARR1*arrHead=(ARR1*)malloc(sizeof(ARR1));
arrHead->next=NULL;
ARR1*arrTail=NULL;
arrTail=addNewArr(arrHead,arrTail);//想插入幾組,就調用幾次我就測試6組
arrTail=addNewArr(arrHead,arrTail);
arrTail=addNewArr(arrHead,arrTail);
arrTail=addNewArr(arrHead,arrTail);
arrTail=addNewArr(arrHead,arrTail);
arrTail=addNewArr(arrHead,arrTail);
printf("採集的原數據組為:
");
printfArr(arrHead);
printf("最大峰值:%d,最小峰值值:%d
",findMaxF(arrHead),removeMinF(arrHead));
printf("刪除最小峰值數據組後的數據為:
");
printfArr(arrHead);
return0;
}
voidprintfArr(ARR1*arrHead)//列印數據鏈表
{
while(arrHead->next!=NULL)
{
printf("%d,%d,%d,%d,%d,%d
",arrHead->next->data[0],arrHead->next->data[1],arrHead->next->data[2],arrHead->next->data[3],arrHead->next->data[4],arrHead->next->data[5]);
arrHead=arrHead->next;
}
}
ARR1*addNewArr(ARR1*arrHead,ARR1*arrTail)//插入一組波形數據返回尾節點
{
int*data=(int*)malloc(sizeof(int)*maxsize),i;
printf("採集一組波形數據(最大採集個數%d):",maxsize);
for(i=0;i<maxsize;i++)
scanf("%d",&data[i]);
ARR1頃雀*arrNew=(ARR1*)malloc(sizeof(ARR1));
arrNew->data=data;
閉唯arrNew->next=NULL;
if(arrHead->next==NULL)//插入第一組數組作為首節點
arrHead->next=arrNew;
else
arrTail->next=arrNew;
arrTail=arrNew;
returnarrTail;
}
intfindMaxF(ARR1*arrHead)//查找最大峰值
{
inti,maxNum=0,maxf=0;
while(arrHead->next!=NULL)
{
雀態早maxNum=0;
for(i=0;i<maxsize;i++)//獲取每組數據的峰值
{
if(arrHead->next->data[i]>maxNum)
maxNum=arrHead->next->data[i];
}
if(maxNum>maxf)//獲取最大峰值
maxf=maxNum;
arrHead=arrHead->next;
}
returnmaxf;
}
intremoveMinF(ARR1*arrHead)//移除最小峰值數據組返回最小峰值
{
inti,maxNum=0,minf=INT_MAX;
ARR1*minDataSave=NULL,*arrHeadSave=arrHead;
while(arrHead->next!=NULL)
{
maxNum=0;
for(i=0;i<maxsize;i++)//獲取每組數據的峰值
{
if(arrHead->next->data[i]>maxNum)
maxNum=arrHead->next->data[i];
}
if(maxNum<minf)//獲取最小峰值
{
minDataSave=arrHead->next;
minf=maxNum;
}
arrHead=arrHead->next;
}
arrHead=arrHeadSave;
//移除最小峰值數據組
while(arrHead->next!=NULL)
{
if(arrHead->next==minDataSave)//刪除節點重組鏈表
{
arrHead->next=minDataSave->next;
minDataSave->next=NULL;
free(minDataSave->data);//釋放節點內存
free(minDataSave);
break;
}
arrHead=arrHead->next;
}
returnminf;
}
㈥ c語言如何求函數極限
如果是用程掘李序近似判首遲計芹激算的話,可以這樣做
#include<stdio.h>
#include<math.h>
main()
{ long int n,k;
double s1,s2,e=1e-8; //e代表計算精度
n=1;k=1; //k=n×n
s1=(3.0*k+n)/(2*k+3);
do{
s2=s1;
k=k+2*n+1; //(n+1) ^2=n^2+2n+1
n=n+1;
s1=(3.0*k+n)/(2*k+3);
}while(fabs(s1-s2)>e) ;
printf("%lf",s1);
}
㈦ c語言如何求數組最大值
解題思路:先鍵盤輸入10個整數,假設數組的第1個是最大數max,同時設置最大值下標為0,接著for循環依次判斷其是否大於最大數,如果大於替換掉最大值,並更新最大值下標,最後輸出最冊桐頌大數和數組下標。
參考代碼:
#include<stdio.h>
intmain(){
inti,a[10],max,maxi;
//輸入10個整數
for(i=0;i<輪讓10;i++)
{
scanf("%d",&a[i]);
}
//假設數組的第1個是最大數max,同時設置最大值下標為0
max=a[0];
maxi=0;
//for循環依次判斷其是否大於最大數,如果大於替換掉最大值,並更新最大值下標
for(i=1;i<州鄭10;i++){
if(a[i]>max){
max=a[i];
maxi=i;
}
}
//輸出最大數和數組下標
printf("最大數為:%d,數組下標為:%d",max,maxi);
return0;
}
程序運行結果如下:
㈧ 求一個C語言程序
20分太少了吧
㈨ C語言周期信號曲線峰值判斷(基於加速度感測器的信號,測量出上下周期運動的上行和下行)圖片馬上上傳
你的辦法估計可行性不高,稍微出個毛刺行談就不對了。
建議採用fft分析,根據檔陵碰頻域的結果判斷一個合理值汪腔。
㈩ 用C語言生成一個頻率是160HZ,峰值是45,相位是45度的正弦波
輸出 y = H* sin( 2*pi*f*t + 45.0/180.0*pi) 的信號即可。
下面殲隱程晌臘序產生 360個點。
#include <stdio.h>
#include <math.h>
int main () {
double f=160.0;
double h=45.0,om;
double phase=45.0; //degrees
double pi;
double t,dt;
double s[360]; //存放生成的信號
int i;
pi = 4.0*atan(1.0); //圓周率
om = 2.0*pi*f; //圓頻率
phase = 45.0/宴改滑180.0*pi; //相位
printf("pi=%f om=%f phase=%f\n",pi,om,phase);
dt = 0.00002; //時間步長
for (i=0;i<360;i++) s[i]= h * sin(om * dt * i + phase);
for (i=0;i<360;i++) {printf("%8.3f ",s[i]);if (i%5==0) printf("\n");};
return 0;
}