小编lem*_*dan的帖子

fortran 2d-FFTW与C 2d-FFTW结果不一致

我正在学习如何使用fortran处理FFTW包.为了产生一个易于验证的例子,我计算了2d平面的功率谱,我用两个不同的叠加波填充.通过这种方式,我确切地知道了功率谱中峰值的确切位置.

由于FFTW文档对于C来说更为广泛,我首先在C中实现了算法,这给了我非常满意的结果: 用C得到的功率谱 "lambda1"和"lambda2"是已知的预期波长.蓝线是获得的功率谱.

然后我尝试用fortran做同样的事情,这给出了奇怪的结果: 用fortran获得的功率谱

我不知道在哪里寻找可能的错误.代码执行顺利.有人可以帮忙吗?

这是C代码,用以下代码编译:gcc stackexchange.c -o a.out -I/home/myname/.local/include -lfftw3 -lm -g -Wall(gcc 5.4.0)

#include <fftw3.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    // parameters
    int Nx = 200;
    int Ny = 100;            
    int nsamples = 200;
    float pi = 3.1415926;
    float physical_length_x = 20;
    float physical_length_y = 10;
    float lambda1 = 0.5;
    float lambda2 = 0.7;
    float dx = physical_length_x/Nx;
    float dy = physical_length_y/Ny;
    float dkx = 2*pi/physical_length_x;
    float dky = 2*pi/physical_length_y;

    // counters/iterators …
Run Code Online (Sandbox Code Playgroud)

c fortran fftw

6
推荐指数
1
解决办法
224
查看次数

散点图标记大小与轴值成正比 - 为什么对于方面=“等于”,x 轴和 y 轴的像素数不同?

据我所知,我的问题与这篇文章密切相关。

我需要绘制一些标记大小与轴值严格成比例的数据。(已经在这里问过这个问题)。

我的方法如下:

  • 创建空散点图作为像素参考
  • 在左下角和右上角散布2个点
  • 将轴限制在这两点上
  • 用于transData.transform获取这两个点的像素值
  • 获取像素距离作为这两点的像素数差
  • (现在我有了距离与像素之比,用 ; 分散我的数据
    s=(size*dist_to_pix_ratio)**2,但这现在并不重要。)

问题是:当我完全按照我所描述的操作时,我得到 y 轴和 x 轴像素数的两个不同值。

这是一个最小的代码:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(7,7))
ax1 = fig.add_subplot(111, aspect='equal')

#setting up an empty scatterplot for pixel reference
xedges=[0.0, 1.0]
yedges=[0.0, 1.0]
emptyscatter=ax1.scatter(xedges, yedges, s=0.0)

#set axes limits
ax1.set_xlim(0.00,1.00)
ax1.set_ylim(0.00,1.00)   


# Calculating the ratio of pixel-to-unit
upright = ax1.transData.transform((1.0,1.0))
lowleft = ax1.transData.transform((0.0,0.0))
x_to_pix_ratio = upright[0] - lowleft[0]
y_to_pix_ratio = upright[1] - lowleft[1]

print x_to_pix_ratio, …
Run Code Online (Sandbox Code Playgroud)

python size matplotlib markers scatter-plot

5
推荐指数
0
解决办法
1565
查看次数

Fortran之前的冒号是什么东西:if(some_condition)then`?

我正在处理其他人编写的一些代码,并发现了一段我尚未见过的Fortran语法,并且不完全理解也无法在网上找到任何内容(可能是因为我不知道它是什么所谓的).

代码如下所示:

bisection_or_ordering:if(ordering /= 'bisection') then
  ...
  do stuff
  ...
end if bisection_or_ordering
Run Code Online (Sandbox Code Playgroud)

bisection_or_ordering 不是变量,也没有在代码中的任何地方声明.

这是做什么的?它是为了什么?它叫什么?

syntax fortran

3
推荐指数
1
解决办法
146
查看次数

python散点图面积大小比例轴长度

我对此感到非常绝望,到目前为止我在 www 上找不到任何东西。

情况是这样的:

  • 我正在使用Python。
  • 我有 3 个数组:x 坐标、y 坐标和半径。
  • 我想用给定的 x 和 y 坐标创建散点图。

到目前为止,一切都按照我想要的方式进行。这是困扰我的事情:

  • 散点图中每个点的圆大小应由半径数组定义。
  • 坐标和半径的值具有相同的单位。更明确地说:假设我在 (1, 1) 处有一个点,半径指定为 0.5。然后我想在图中得到一个以 (1, 1) 为中心且边界穿过点 (1.5, 1)、(1, 1.5)、(0.5, 1) 和 (1, 0.5) 的圆

我正在努力解决的是找出绘图点与轴长度的比率。我需要使用点,因为据我所知,散点图的圆圈大小以点值给出。因此,如果假设我的轴从 0 到 10,我需要知道图中中间有多少个点。

有谁能够帮助我?或者还有其他方法可以做到这一点吗?提前致谢。

python axis scatter scatter-plot area

2
推荐指数
1
解决办法
3356
查看次数

Python在单个numpy数组中从多个文件中获取数据的快速方法

我需要读入存储在许多相同格式的文件中的数据,但是长度不同,即相同的列,但行数不同.此外,我需要将每列数据存储在一个数组中(最好是一个numpy数组,但列表也可以接受).

现在,我在循环中读取每个文件numpy.loadtxt(),然后连接生成的数组.假设数据由3列组成,并存储在两个文件"foo"和"bar"中:

import numpy as np
filenames = ["foo", "bar"]
col1_all = 0  #data will be stored in these 3 arrays
col2_all = 0
col3_all = 0
for f in filename:
    col1, col2, col3 = np.loadtxt(f, unpack=True)
    if col1.shape[0] > 0: # I can't guarantee file won't be empty
        if type(col1_all) == int:
            # if there is no data read in yet, just copy arrays
            col1_all = col1[:]
            col2_all = col2[:]
            col3_all = col3[:]
        else:
            col1_all = np.concatenate((col1_all, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy python-2.7

2
推荐指数
1
解决办法
1097
查看次数

标签 统计

python ×3

fortran ×2

scatter-plot ×2

area ×1

arrays ×1

axis ×1

c ×1

fftw ×1

markers ×1

matplotlib ×1

numpy ×1

python-2.7 ×1

scatter ×1

size ×1

syntax ×1