1、首先打开vc60,新建一个控制台项目,添加头文件。
2、然后我们根据图示代码添加main主函数。
3、然后我们根据图示代码定义6个long型变量。
4、然后我们根据图示代码使用scanf给input赋值。
5、然后我们根据图示代码分解个位、百位、千位、万位。
6、然后我们根据图示代码使用if判断。
7、然后我们根据图示代码运行程序,看看结果无误。
其实!在你编写的程序当中还是有一些漏洞的,比如P7的数值未设定,从而造成N0020程序段F值读取错误。
P数据是华兴数控的一个特点,在你以下的程序段使用P 数据时也必须在程序开头设定完整。看来你并没有完全做到哦!FP7;FP8似乎好像都没有。
相信对你会有所帮助
这是我写的1024点的快速傅里叶变换程序,下面有验证,你把数组
double
A[2049]={0};
double
B[1100]={0};
double
powerA[1025]={0};
改成
A[256]={0};
B[130]={0};
power[129]={0};就行了,
void
FFT(double
data[],
int
nn,
int
isign)
的程序可以针对任何点数,只要是2的n次方
具体程序如下:
#include
<iostreamh>
#include
"mathh"
#include<stdioh>
#include<stringh>
#include
<stdlibh>
#include
<fstreamh>
#include
<afxh>
void
FFT(double
data[],
int
nn,
int
isign)
{
//复数的快速傅里叶变换
int
n,j,i,m,mmax,istep;
double
tempr,tempi,theta,wpr,wpi,wr,wi,wtemp;
n
=
2
nn;
j
=
1;
for
(i
=
1;
i<=n
;
i=i+2)
//这个循环进行的是码位倒置。
{
if(
j
>
i)
{
tempr
=
data[j];
tempi
=
data[j
+
1];
data[j]
=
data[i];
data[j
+
1]
=
data[i
+
1];
data[i]
=
tempr;
data[i
+
1]
=
tempi;
}
m
=
n
/
2;
while
(m
>=
2
&&
j
>
m)
{
j
=
j
-
m;
m
=
m
/
2;
}
j
=
j
+
m;
}
mmax
=
2;
while(
n
>
mmax
)
{
istep
=
2
mmax;
//这里表示一次的数字的变化。也体现了级数,若第一级时,也就是书是的第0级,其为两个虚数,所以对应数组应该增加4,这样就可以进入下一组运算
theta
=
-628318530717959
/
(isign
mmax);
wpr
=
-20
sin(05
theta)sin(05
theta);
wpi
=
sin(theta);
wr
=
10;
wi
=
00;
for(
m
=
1;
m<=mmax;
m=m+2)
{
for
(i
=
m;
i<=n;
i=i+istep)
{
j
=
i
+
mmax;
tempr=double(wr)data[j]-double(wi)data[j+1];//这两句表示蝶形因子的下一个数乘以W因子所得的实部和虚部。
tempi=double(wr)data[j+1]+double(wi)data[j];
data[j]
=
data[i]
-
tempr;
//蝶形单元计算后下面单元的实部,下面为虚部,注意其变换之后的数组序号与书上蝶形单元是一致的
data[j
+
1]
=
data[i
+
1]
-
tempi;
data[i]
=
data[i]
+
tempr;
data[i
+
1]
=
data[i
+
1]
+
tempi;
}
wtemp
=
wr;
wr
=
wr
wpr
-
wi
wpi
+
wr;
wi
=
wi
wpr
+
wtemp
wpi
+
wi;
}
mmax
=
istep;
}
}
void
main()
{
//本程序已经和MATLAB运算结果对比,准确无误,需要注意的的是,计算中数组都是从1开始取得,丢弃了A[0]等数据
double
A[2049]={0};
double
B[1100]={0};
double
powerA[1025]={0};
char
line[50];
char
dataA[20],
dataB[20];
int
ij;
char
ch1[3]="\t";
char
ch2[3]="\n";
int
strl1,strl2;
CString
str1,str2;
ij=1;
//读入文件data1024txt中的数据,
其中的数据格式见该文件
FILE
fp
=
fopen("data1024txt","r");
if(!fp)
{
cout<<"Open
file
is
failing!"<<endl;
return;
}
while(!feof(fp))
//feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。
{
memset(line,0,50);
//清空为0
memset(dataA,0,20);
memset(dataB,0,20);
fgets(line,50,fp);
//函数的功能是从fp所指文件中读入n-1个字符放入line为起始地址的空间内
sscanf(line,
"%s%s",
dataA,
dataB);
//我同时读入了两列值,但你要求1024个,那么我就只用了第一列的1024个值
//dataA读入第一列,dataB读入第二列
B[ij]=atof(dataA);
//将字符型的dataA值转化为float型
ij++;
}
for
(int
mm=1;mm<1025;mm++)//A[2mm-1]是实部,A[2mm]是虚部,当只要输入实数时,那么保证虚部A[mm2]为零即可
{
A[2mm-1]=B[mm];
A[2mm]=0;
}
//正式计算FFT
FFT(A,1024,1);
//写入数据到workouttxt文件中
for
(int
k=1;k<2049;k=k+2)
{
powerA[(k+1)/2]=sqrt(pow(A[k],20)+pow(A[k+1],20));//求功率谱
FILE
pFile=fopen("workouttxt","a+");
//a+只能在文件最后补充,光标在结尾。没有则创建
memset(ch1,0,15);
str1Format("%4f",powerA[(k+1)/2]);
if
(A[k+1]>=0)
str2Format("%d\t%64f%s%64f
%s",(k+1)/2,A[k],"+",A[k+1],"i");//保存fft计算的频谱,是复数频谱
else
str2Format("%d\t%64f%64f
%s",(k+1)/2,A[k],A[k+1],"i");
strl1=strlen(str1);
strl2=strlen(str2);
//
用
法:fwrite(buffer,size,count,fp);
//
buffer:是一个指针,对fwrite来说,是要输出数据的地址。
//
size:要写入的字节数;
//
count:要进行写入size字节的数据项的个数;
//
fp:目标文件指针。
fwrite(str2,1,strl2,pFile);
fwrite(ch1,1,3,pFile);
fwrite(ch1,1,3,pFile);
fwrite(str1,1,strl1,pFile);
fwrite(ch2,1,3,pFile);
fclose(pFile);
}
cout<<"计算完毕,到fft_test\workouttxt查看结果"<<endl;
}
(1)n个节点lagrange插值多项式程序
function yy=lagrange(x1,y1,xx)
%本程序为Lagrange1插值,其中x1,y1
%为插值节点和节点上的函数值,输出为插值点xx的函数值,
%xx可以是向量。
syms x
n=length(x1);
for i=1:n
t=x1;t(i)=[];L(i)=prod((x-t)/(x1(i)-t));% L向量用来存放插值基函数
end
u=sum(Ly1);
p=simplify(u) % p是简化后的Lagrange插值函数(字符串)
yy=subs(p,x,xx);
clf
plot(x1,y1,'ro',xx,yy,'')
========
命令窗口命令及结果
format long g
>> lagrange([11 12],[0190809 0207912],115)
p =
(616200515415341x)/36028797018963968 + 96413060822745/36028797018963968
ans =
01993605
>> lagrange([11 12 13],[0190809 0207912 0224951],115)
p =
- (1152921504607x^2)/36028797018963968 + (321358855010651x)/18014398509481984 - 55772577785379/36028797018963968
ans =
01993685
>> sin(115pi/180)
ans = 0199367934417197
(2)
function f = Newton(x,y,x0)
%本程序为Newton插值,其中x,y
%为插值节点和节点上的函数值,输出为插值点x0的函数值,
%x0可以是向量。
syms t;
if(length(x) == length(y))
n = length(x);
c(1:n) = 00;
else
disp('x和y的维数不相等!');
return;
end
f = y(1);
y1 = 0;
l = 1;
for(i=1:n-1)
for(j=i+1:n)
y1(j) = (y(j)-y(i))/(x(j)-x(i));
end
c(i) = y1(i+1);
l = l(t-x(i));
f = f + c(i)l;
simplify(f)
y = y1;
if(i==n-1)
if(nargin == 3)
f = subs(f,'t',x0);
else
f = collect(f); %将插值多项式展开
f = vpa(f, 6);
end
end
end
==========
fn=Newton([11 12],[0190809 0207912],115)
ans =
(616200515415341t)/36028797018963968 + 96413060822745/36028797018963968
fn =
01993605
>> fn=Newton([11 12 13],[0190809 0207912 0224951],115)
ans =
(616200515415341t)/36028797018963968 + 96413060822745/36028797018963968
ans =
- (1152921504607t^2)/36028797018963968 + (321358855010651t)/18014398509481984 - 55772577785379/36028797018963968
fn =
01993685
//1 设计一个程序,输入123,返回1+2+3也就是三个数的和6,输入-123 也还是三个数的和,是6
#include <stdioh>
int add(int n)
{
int sum=0;
if(n<0) n=-n; //如果n为负数则取相反数
while(n)
{
sum+=n%10;//分离出n的最后一位,将其加到sum中,如123则分离出3加到sum中,sum=3
n=n/10;//将n的最后一位去掉,如123则此时n=12,回到循环继续判断
}
return sum;
}
int main(void)
{
int n,sum;
printf("请输入一个数:\n");
scanf("%d",&n);
sum=add(n);
printf("该数各位的和为:%d\n",sum);
return 0;
}//2 设计程序, 输入123 ,返回321。 输入-123, 返回321
#include <stdioh>
int reverse(int n)
{
int m=0;
if(n<0) n=-n;
while(n)
{
m=m10+n%10;
n=n/10;
}
return m;
}
int main(void)
{
int n,m;
printf("请输入一个数:\n");
scanf("%d",&n);
m=reverse(n);
printf("该数反转后为:%d\n",m);
return 0;
}
Scikit-learn
Scikit-learn是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,GradientBoosting,聚类算法和DBSCAN。而且也设计出了Pythonnumerical和scientificlibrariesNumpyandScipy
2Pylearn2
Pylearn是一个让机器学习研究简单化的基于Theano的库程序。
3NuPIC
NuPIC是一个以HTM学习算法为工具的机器智能。HTM是皮层的精确计算方法。HTM的核心是基于时间的持续学习算法和储存和撤销的时空模式。NuPIC适合于各种各样的问题,尤其是检测异常和预测的流数据来源。
4Nilearn
Nilearn是一个能够快速统计学习神经影像数据的Python模块。它利用Python语言中的scikit-learn工具箱和一些进行预测建模,分类,解码,连通性分析的应用程序来进行多元的统计。
5PyBrain
Pybrain是基于Python语言强化学习,人工智能,神经网络库的简称。它的目标是提供灵活、容易使用并且强大的机器学习算法和进行各种各样的预定义的环境中测试来比较你的算法。
6Pattern
Pattern是Python语言下的一个网络挖掘模块。它为数据挖掘,自然语言处理,网络分析和机器学习提供工具。它支持向量空间模型、聚类、支持向量机和感知机并且用KNN分类法进行分类。
7Fuel
Fuel为你的机器学习模型提供数据。他有一个共享如MNIST,CIFAR-10(数据集),Google’sOneBillionWords(文字)这类数据集的接口。你使用他来通过很多种的方式来替代自己的数据。
8Bob
Bob是一个的信号处理和机器学习的工具。它的工具箱是用Python和C语言共同编写的,它的设计目的是变得更加高效并且减少开发时间,它是由处理图像工具,音频和处理、机器学习和模式识别的大量包构成的。
9Skdata
Skdata是机器学习和统计的数据集的库程序。这个模块对于玩具问题,流行的计算机视觉和自然语言的数据集提供标准的Python语言的使用。
10MILK
MILK是Python语言下的机器学习工具包。它主要是在很多可得到的分类比如SVMS,K-NN,随机森林,决策树中使用监督分类法。它还执行特征选择。这些分类器在许多方面相结合,可以形成不同的例如无监督学习、密切关系金传播和由MILK支持的K-means聚类等分类系统。
11IEPY
IEPY是一个专注于关系抽取的开源性信息抽取工具。它主要针对的是需要对大型数据集进行信息提取的用户和想要尝试新的算法的科学家。
12Quepy
Quepy是通过改变自然语言问题从而在数据库查询语言中进行查询的一个Python框架。他可以简单的被定义为在自然语言和数据库查询中不同类型的问题。所以,你不用编码就可以建立你自己的一个用自然语言进入你的数据库的系统。
现在Quepy提供对于Sparql和MQL查询语言的支持。并且计划将它延伸到其他的数据库查询语言。
13Hebel
Hebel是在Python语言中对于神经网络的深度学习的一个库程序,它使用的是通过PyCUDA来进行GPU和CUDA的加速。它是最重要的神经网络模型的类型的工具而且能提供一些不同的活动函数的激活功能,例如动力,涅斯捷罗夫动力,信号丢失和停止法。
14mlxtend
它是一个由有用的工具和日常数据科学任务的扩展组成的一个库程序。
15nolearn
这个程序包容纳了大量能对你完成机器学习任务有帮助的实用程序模块。其中大量的模块和scikit-learn一起工作,其它的通常更有用。
16Ramp
Ramp是一个在Python语言下制定机器学习中加快原型设计的解决方案的库程序。他是一个轻型的pandas-based机器学习中可插入的框架,它现存的Python语言下的机器学习和统计工具(比如scikit-learn,rpy2等)Ramp提供了一个简单的声明性语法探索功能从而能够快速有效地实施算法和转换。
17FeatureForge
这一系列工具通过与scikit-learn兼容的API,来创建和测试机器学习功能。
这个库程序提供了一组工具,它会让你在许多机器学习程序使用中很受用。当你使用scikit-learn这个工具时,你会感觉到受到了很大的帮助。(虽然这只能在你有不同的算法时起作用。)
18REP
REP是以一种和谐、可再生的方式为指挥数据移动驱动所提供的一种环境。
它有一个统一的分类器包装来提供各种各样的 *** 作,例如TMVA,Sklearn,XGBoost,uBoost等等。并且它可以在一个群体以平行的方式训练分类器。同时它也提供了一个交互式的情节。
19Python学习机器样品
用的机器学习建造的简单收集。
20Python-ELM
这是一个在Python语言下基于scikit-learn的极端学习机器的实现。
以上就是关于C语言 关于判断回文数的程序全部的内容,包括:C语言 关于判断回文数的程序、华兴数控系统编写好的程序去做的时候出错 请大哥哥 大姐姐 帮个忙 告诉我是怎么回事 哪里的问题 小弟谢谢、一个关于128点的快速傅立叶的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)