3122

 
  
1 /*
2 二分好题
3 */
4
5 // include file
6 #include < cstdio >
7 #include < cstdlib >
8 #include < cstring >
9 #include < cmath >
10 #include < cctype >
11 #include < ctime >
12
13 #include < iostream >
14 #include < sstream >
15 #include < fstream >
16 #include < iomanip >
17 #include < bitset >
18
19 #include < algorithm >
20 #include < string >
21 #include < vector >
22 #include < queue >
23 #include < set >
24 #include < list >
25 #include < functional >
26
27 using namespace std;
28
29 // typedef
30 typedef long long LL;
31 typedef unsigned long long ULL;
32 typedef __int64 Bint;
33
34 //
35 #define read freopen("in.txt","r",stdin)
36 #define write freopen("out.txt","w",stdout)
37 #define FORi(a,b,c) for(int i=(a);i<(b);i+=c)
38 #define FORj(a,b,c) for(int j=(a);j<(b);j+=c)
39 #define FORk(a,b,c) for(int k=(a);k<(b);k+=c)
40 #define FORp(a,b,c) for(int p=(a);p<(b);p+=c)
41 #define FORii(a,b,c) for(int ii=(a);ii<(b);ii+=c)
42 #define FORjj(a,b,c) for(int jj=(a);jj<(b);jj+=c)
43 #define FORkk(a,b,c) for(int kk=(a);kk<(b);kk+=c)
44
45 #define FF(i,a) for(int i=0;i<(a);i++)
46 #define FFD(i,a) for(int i=(a)-1;i>=0;i--)
47
48 #define Z(a) (a<<1)
49 #define Y(a) (a>>1)
50
51 const double eps = 1e - 6 ;
52 const double INFf = 1e10;
53 const int INFi = 1000000000 ;
54 const double Pi = acos( - 1.0 );
55
56 template < class T > inline T sqr(T a){ return a * a;}
57 template < class T > inline T TMAX(T x,T y)
58 {
59 if (x > y) return x;
60 return y;
61 }
62 template < class T > inline T TMIN(T x,T y)
63 {
64 if (x < y) return x;
65 return y;
66 }
67 template < class T > inline void SWAP(T & x,T & y)
68 {
69 T t = x;
70 x = y;
71 y = t;
72 }
73 template < class T > inline T MMAX(T x,T y,T z)
74 {
75 return TMAX(TMAX(x,y),z);
76 }
77
78
79 // code begin
80 #define MAXN 10010
81 int T,N,F;
82 double R[MAXN],ans;
83 bool Isok( double lt)
84 {
85 int cnt = 0 ;
86 FORi( 0 ,N, 1 )
87 {
88 cnt += ( int )((Pi * R[i] * R[i]) / lt);
89 if (cnt >= F + 1 ) return true ;
90 }
91 return false ;
92 }
93 int main()
94 {
95 read;
96 write;
97 scanf( " %d " , & T);
98 while (T -- )
99 {
100 scanf( " %d %d " , & N, & F);
101 FORi( 0 ,N, 1 )
102 {
103 scanf( " %lf " , & R[i]);
104 }
105 double LL = 0 ,RR = Pi * MAXN * MAXN;
106 while ( RR - LL > eps)
107 {
108 double mid = (LL + RR) / 2 ;
109 if (Isok(mid))
110 {
111 LL = mid;
112 }
113 else
114 {
115 RR = mid;
116 }
117 }
118 printf( " %.4f\n " ,LL);
119 }
120 return 0 ;
121 }

转载于:https://www.cnblogs.com/ac2012/archive/2011/03/11/1980593.html

分数阶傅里叶变换(Fractional Fourier Transform, FRFT)是对传统傅里叶变换的拓展,它通过非整数阶的变换方式,能够更有效地处理非线性信号以及涉及时频局部化的问题。在信号处理领域,FRFT尤其适用于分析非平稳信号,例如在雷达、声纳和通信系统中,对线性调频(Linear Frequency Modulation, LFM)信号的分析具有显著优势。LFM信号是一种频率随时间线性变化的信号,因其具有宽频带和良好的时频分辨率,被广泛应用于雷达和通信系统。FRFT能够更精准地捕捉LFM信号的时间和频率信息,相比普通傅里叶变换,其性能更为出色。 MATLAB是一种强大的数值计算和科学计算工具,拥有丰富的函数库和用户友好的界面。在MATLAB中实现FRFT,通常需要编写自定义函数或利用信号处理工具箱中的相关函数。例如,一个名为“frft”的文件可能是用于执行分数阶傅里叶变换的MATLAB脚本或函数,并展示其在信号处理中的应用。FRFT的正确性验证通常通过对比变换前后信号的特性来完成,比如评估信号的重构质量、信噪比等。具体而言,可以通过计算原始信号与经过FRFT处理后的信号之间的相似度,或者对比LFM信号的关键参数(如初始频率、扫频率和持续时间)是否在变换后得到准确恢复。 在MATLAB代码实现中,通常包含以下步骤:首先,生成LFM信号模型,设定其初始频率、扫频率、持续时间和采样率等参数;其次,利用自定义的frft函数对LFM信号进行分数阶傅里叶变换;接着,使用MATLAB的可视化工具(如plot或imagesc)展示原始信号的时域和频域表示,以及FRFT后的结果,以便直观对比;最后,通过计算均方误差、峰值信噪比等指标来评估FRFT的性能。深入理解FRFT的数学原理并结合MATLAB编程技巧,可以实现对LFM信号的有效分析和处理。这个代码示例不仅展示了理论知识在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值