① c语言编程获取信号强度,需要C语言哪些知识
根据信号强度算距离,这个是关键,c语言不重要
② C语言如何处理RGB信号
# include <stdio.h>
//计算样品深度
int sampleDepth(int x)
{
return (x-1)/2;
}
int main()
{
int i=0;
printf("获取到的样品深度是:");
scanf("%d",&i);
printf("颜色强度%d\r\n",sampleDepth(i));
return 0;
}
③ 用C语言编程及作界面处理信号
#include<graphics.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<dos.h>
float ar[512],ai[512];
float a[1025];
void testdata()
{
int i;
for(i=0;i<512;i++)
{
ar[i]=50*cos(i*3.14159/32)+60*cos(i*3.14159/16)+53*cos(i*3.14159/64)+24*cos(i*3.14159/8)+10*cos(i*3.14159/128);
ai[i]=0;
}
}
void fft(int nn,int t)
{
int n1,n2,i,j,k,l,m,s,l1;
float t1,t2,x,y;
float w1,w2,u1,u2,z;
float fsin[10]={0.000000,1.000000,0.707107,0.3826834,0.1950903,0.09801713,0.04906767,0.02454123,0.01227154,0.00613588,};
float fcos[10]={-1.000000,0.000000,0.7071068,0.9238796,0.9807853,0.99518472,0.99879545,0.9996988,0.9999247,0.9999812,};
switch(nn)
{
case 1024: s=10; break;
case 512: s=9; break;
case 256: s=8; break;
}
n1=nn/2; n2=nn-1;
j=1;
for(i=1;i<=nn;i++)
{
a[2*i]=ar[i-1];
a[2*i+1]=ai[i-1];
}
for(l=1;l<n2;l++)
{
if(l<j)
{
t1=a[2*j];
t2=a[2*j+1];
a[2*j]=a[2*l];
a[2*j+1]=a[2*l+1];
a[2*l]=t1;
a[2*l+1]=t2;
}
k=n1;
while (k<j)
{
j=j-k;
k=k/2;
}
j=j+k;
}
for(i=1;i<=s;i++)
{
u1=1;
u2=0;
m=(1<<i);
k=m>>1;
w1=fcos[i-1];
w2=t*fsin[i-1];
for(j=1;j<=k;j++)
{
for(l=j;l<nn;l=l+m)
{
l1=l+k;
t1=a[2*l1]*u1-a[2*l1+1]*u2;
t2=a[2*l1]*u2+a[2*l1+1]*u1;
a[2*l1]=a[2*l]-t1;
a[2*l1+1]=a[2*l+1]-t2;
a[2*l]=a[2*l]+t1;
a[2*l+1]=a[2*l+1]+t2;
}
z=u1*w1-u2*w2;
u2=u1*w2+u2*w1;
u1=z;
}
}
for(i=1;i<=nn/2;i++)
{
ar[i]=a[2*i+2]/nn;
ai[i]=-a[2*i+3]/nn;
a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]);
}
}
int main ()
{
int i;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
setfillstyle(SOLID_FILL,WHITE);
bar(0,0,639,479);
//模拟测试数据
testdata();
//波形显示
setcolor(BLACK);
line(10,119,550,119); // x轴
line(10,10,10,239); // y轴
setcolor(BLUE);
for(i=0;i<511;i++)
line(i+10,119-ar[i],i+10+1,119-ar[i+1]);
//FFT
fft(512,-1);
//频谱显示
setcolor(BLACK);
line(10,459,550,459); // x轴
line(10,259,10,459); // y轴
setcolor(RED);
for(i=0;i<256;i++)
line(2*i+10,459-a[i],2*i+10,459);
getch();
closegraph();
return 0;
}
④ linux中c语言有关信号的程序
简单处理了一下,希望对你有帮助
#define err_sys( str ) printf("error:%s\n" , str )
static void sig_int(int signo)
{
struct tms timebuf;
int wallclock=times(&timebuf);
fprintf(stderr,"clock ticks since system startup are %d,\n",wallclock);
}
static void sig_term(int signo)
{
struct tms timebuf;
int wallclock=times(&timebuf);
fprintf(stderr,"clock ticks since system start are %d,\n",wallclock);
exit(0); //终止程序
}
static void sig_alrm(int signo)
{
static int times=1;
alarm(0);//输出时,不再计时
printf("time:%d\n" , times*10 );
times++ ;
alarm(10); //重新开始计时
}
int main()
{
if (signal(SIGINT,sig_int)==SIG_ERR)
err_sys("can't catch SIGINT");
if (signal(SIGTERM,sig_term)==SIG_ERR)
err_sys("can't catch SIGTERM");
alarm(10); //开始计时
if (signal(SIGALRM,sig_alrm)==SIG_ERR)
err_sys("can't catch SIGALRM");
while(1) ; //等待在这里
return(0);
}
⑤ 用C语言设计信号分析程序 两道题 要求运行时可以显示波形图 原理越简单越好 最好每步都有解释
DDF还有FFT,我们做过,用的是MATLAB,你要吗??联系我即可!我的邮箱[email protected]
⑥ 用MATLAB语言或者C语言编程(信号方面)
蝶形图的话,书上都有的。8点的话,就是:
8 - 4 - 2 -1这样的结构
fft的程序:
fs=1000
t=0:1/fs:0.6;
f1=100;
f2=300;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t);
subplot(711)
plot(x);
title('f1(100Hz)\f2(300Hz)的正弦信号,初相0')
xlabel('序列(n)')
grid on
number=512
y=fft(x,number);
n=0:length(y)-1;
f=fs*n/length(y);
subplot(713)
plot(f,abs(y));
title('f1\f2的正弦信号的FFT(512点)')
xlabel('频率Hz')
grid on
x=x+randn(1,length(x));
subplot(715)
plot(x);
title('原f1\f2的正弦信号(含随机噪声)')
xlabel('序列(n)')
grid on
y=fft(x,number);
n=0:length(y)-1;
f=fs*n/length(y);
subplot(717)
plot(f,abs(y));
title('原f1\f2的正弦信号(含随机噪声)的FFT(512点)')
xlabel('频率Hz')
grid on
⑦ 如何用C语言实现数字信号处理算法
下面的资料可看一下
C语言实现数字信号处理算法
http://wenku..com/view/eb6e24c52cc58bd63186bd02.html
数字信号处理C语言程序集》
scilab,octave是C语言实现的开源的类matlab软件,里面有许多c语言实现的数字信号处理的算法,可以研究一下。
⑧ 为什么《数字信号处理c语言程序集》这本书里的主
数字信号处理C语言程序集,包括数字信号的产生、快速傅立叶变换、快速离散正交变换、快速卷积与相关、数字滤波器的时域和频域响应、IIR数字滤波器的设计、FIR数字滤波器的设计、经典谱估计、现代谱估计、时—频分析、 随机信号的数字滤波、数字图像处理、人工神经网络的C语言实现。
⑨ C语言中信号问题
信号是程序执行过程中出现的异常情况。它可能是由程序中的错误造成的,例如引用内存中的一个非法地址;或者是由程序数据中的错误造成的,例如浮点数被0除;或者是由外部事件引发的,例如用户按了Ctrl+Break键。
你可以利用标准库函数signal()指定要对这些异常情况采取的处理措施(实施处理措施的函数被称为“信号处理函数”)。signal()的原型为:
#include <signal.h>
void(*signal(int hum,void(*func)(int)))(int);
如果定义一个typedef,理解起来就容易一些了。下面给出的sigHandler_t类型是指向一个程序的指针,该函数有一个int类型的参数,并且返回一个void类型:
typedef void(*sigHandler_t)(int);
sigHandler_t signal(int num , sigHandler_t func);
signal()有两个参数,分别为int类型和sigHandler_t类型,其返回值为sigHandler_t类型。以func参数形式传递给signal()的那个函数将成为第num号异常情况的新的信号处理函数。signal()的返回值是信号hum原来的信号处理函数。在设置了一个暂时的信号处理函数之后,你可以利用该值恢复程序先前的行为。num的可能值依赖于系统,并且在signal.h中列出。func的可能值可以是你的程序中的任意函数,或者是SIG_DFL和SLG_IGN这两个特别定义的值之一。SIG_DFL是指系统的缺省处理措施,通常是暂停执行程序;SIG_IGN表示信号将被忽略。
⑩ C语言信号处理程序
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
voidmy_func(intsign_no)
{
if(sign_no==SIGINT)
printf("IhavegetSIGINT ");
elseif(sign_no==SIGTERM)
printf("IhavegetSIGQUIT ");
}
intmain()
{
printf(" ");
printf("processis%d ",getpid());
signal(SIGINT,my_func);
signal(SIGTERM,my_func);
while(1);
exit(0);
}
linux 平台就 用while阻塞就行
不知道你用的是什么平台?