for m=1:1:6 Z=Z+sqrt(3)*r*exp(i*pi/6); for pp=1:1:6 for k=1:m N=N+1; n=Z++r*exp(i*theta); g1=fill(real(n),imag(n),'k'); set(g1,'FaceColor',[1,0.5,0],'edgecolor',[0.5,0,0]); Z=Z+sqrt(3)*r*exp(i*At(pp)); end end end
时间: 2024-04-10 09:28:47 浏览: 183
这段代码包含了多个嵌套的循环,用于绘制一系列填充的图形。
首先,代码中的 `Z` 变量被初始化为一个复数。然后,通过循环和对 `Z` 的操作,图形被迭代地绘制出来。
具体来说,代码的执行流程如下:
1. 第一个外层循环 `for m=1:1:6` 控制了图形的绘制次数,共进行了 6 次迭代。
2. 在每次迭代开始时,`Z` 被更新为 `Z+sqrt(3)*r*exp(i*pi/6)`,其中 `r` 是半径。
3. 紧接着是两个嵌套的循环:
- 第一个内层循环 `for pp=1:1:6` 控制了图形中每个小区域的绘制次数,也进行了 6 次迭代。
- 第二个内层循环 `for k=1:m` 控制了每个小区域中填充图形的数量,每次迭代增加 1 个填充图形。
4. 在每次迭代中,`N` 被更新为 `N+1`,然后根据 `Z` 和 `theta` 绘制一个填充图形。具体绘制的图形是通过 `fill` 函数实现的。
5. 最后,在每次迭代结束时,`Z` 被更新为 `Z+sqrt(3)*r*exp(i*At(pp))`,其中 `At` 是一个角度向量。
通过这些循环和更新操作,可以绘制一系列具有填充效果的图形。具体图形的形状、颜色等细节,可以根据代码中的参数和函数调用进行调整。
相关问题
matlab taylorwin(n,nbar,sll)加窗函数 c/c++实现代码
MATLAB代码:
```matlab
function w = taylorwin(n, nbar, sll)
% TAYLORWIN returns a Taylor window of length n with sidelobe level sll
% nbar is the width of mainlobe
% Usage: w = taylorwin(n, nbar, sll)
%
% Ref: J. F. Kaiser, "Nonrecursive digital filter design using I0-sinh window function," Proc. IEEE Int. Symp. Circuits and Systems, pp. 20-23, Apr. 1974.
%
% Written by: Z. Shi, 2019/10/15
% Check inputs
if nargin < 3
sll = 30;
end
if nargin < 2
nbar = ceil(n/4);
end
if nargin < 1
error('Not enough input arguments');
end
if mod(n, 2) == 0
error('Window length must be odd');
end
% Normalize nbar
nbar = nbar/(n-1);
% Calculate beta parameter
beta = pi*sll/20;
k = 0:n-1;
a = nbar^2 - (k-n/2).^2;
b = sqrt(a)./nbar;
beta2 = beta^2;
temp = sqrt(1 - beta2*a)/beta;
w = sin(beta * b)./b .* temp;
% Set DC to 1
w((n+1)/2) = 1;
end
```
C/C++代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double bessi0(double x)
{
double ax,ans,a;
double y;
if ((ax=fabs(x)) < 3.75) {
y=x/3.75;
y*=y;
ans=1.0+y*(3.5156229+y*(3.0899424+y*(1.2067492
+y*(0.2659732+y*(0.360768e-1+y*0.45813e-2)))));
} else {
y=3.75/ax;
ans=(exp(ax)/sqrt(ax))*(0.39894228+y*(0.1328592e-1
+y*(0.225319e-2+y*(-0.157565e-2+y*(0.916281e-2
+y*(-0.2057706e-1+y*(0.2635537e-1+y*(-0.1647633e-1
+y*0.392377e-2))))))));
}
return ans;
}
double taylorwin(double *w, int n, int nbar, double sll)
{
// Check inputs
if (n%2 == 0)
{
cout << "Window length must be odd." << endl;
return 0;
}
// Normalize nbar
double nbar_norm = (double)nbar/(double)(n-1);
// Calculate beta parameter
double beta = M_PI*sll/20.0;
for (int i = 0; i < n; i++)
{
double k = i - (n-1)/2.0;
double a = nbar_norm*nbar_norm - k*k;
double b = sqrt(a)/nbar_norm;
double beta2 = beta*beta;
double temp = sqrt(1 - beta2*a)/beta;
double bes = bessi0(beta*b);
w[i] = bes*temp;
}
// Set DC to 1
w[(n-1)/2] = 1;
return 1;
}
int main()
{
int n = 101;
int nbar = 20;
double sll = 30;
double w[n] = {0};
taylorwin(w, n, nbar, sll);
for (int i = 0; i < n; i++)
{
printf("%f\n", w[i]);
}
return 0;
}
```
阅读全文
相关推荐









