小编bob*_*nto的帖子

Fortran可以直接从二进制文件中读取字节吗?

我有一个二进制文件,我想用Fortran阅读.问题是它不是由Fortran编写的,因此它没有记录长度指示符.因此,通常未格式化的Fortran读取将无法正常工作.

我有一个想法,我可以偷偷摸摸地将文件作为格式化文件,逐字节(或4字节,4字节,真的)读入字符数组,然后将字符的内容转换为整数和浮点数转移函数或可怕的等价语句.但是这不起作用:我尝试一次读取4个字节,根据inquire语句的POS输出,读取超过6000个字节左右,字符数组加载垃圾.

所以这是不行的.我忘了这种方法有一些细节吗?或者在Fortran中只有一种根本不同且更好的方法吗?(顺便说一句,我也试过读入一个integer*1数组和一个字节数组.即使这些代码会被编译,当它出现在read语句中时,代码崩溃了.)

binary file-io byte fortran fortran90

7
推荐指数
1
解决办法
4878
查看次数

bash中的复合逻辑测试

关于bash的问题....

我写了一些代码来检查一年是否是一个年级.相关部分如下:

if [ $testnum4 -eq 0 -a $testnum100 -ne 0 ] || [ $testnum400 -eq 0 ]
then
  echo 0
fi
Run Code Online (Sandbox Code Playgroud)

好吧,这段代码确实有效.我的问题是我还不太确定我在做什么.只是为了看看会发生什么,我已经尝试了几种变体:将整个测试表达式包含在方形支持中,使用&&我所拥有的位置-a-o我所拥有的位置||等.除了上面写的一个表达式之外,什么都没有用.我偶然发现它,我很高兴我做到了,但下次我必须做这样的事情,我想知道我在做什么.

那么:任何人都能快速解释复合测试在bash中的运作方式吗?或指向这个主题的好资源的指针?

谢谢.

这是一个失败的代码:

let testnum4=$1%4
let testnum100=$1%100
let testnum400=$1%400

if [ $testnum4 -eq 0 && $testnum100 -ne 0 ] -o [ $testnum400 -eq 0 ]
then
  echo 0
fi
Run Code Online (Sandbox Code Playgroud)

testing bash

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

如何使用Matplotlib颤动刻度

我需要做一系列矢量绘图。我可以使用matplotlib的颤抖例程获取任意数量的绘图。关键是,颤动器会自动缩放每个图,但是我需要每个图中的向量都代表相同的比例。例如,如果在一个绘图中以1cm的矢量表示10 km / hr,则在所有绘图中以1cm的矢量表示10km / hr。(我真的不在乎矢量是否具体为1cm。这只是一个例子。)我想我可以通过分别为每个图调整scale参数来实现这一点。但这似乎不起作用。

例如,我在第一个图中找到最大速度mxs1,然后对每个图执行类似的操作

mxspd = np.max(speed[n])
pylab.quiver(x,y,vx[n],vy[n],scale=mxs1/mxspd)
Run Code Online (Sandbox Code Playgroud)

但这不能充分调整向量的长度。例如,在我尝试的情况下,mxspd大约是的一半mxs1,因此绘图中的向量的n长度应大约是第一个绘图中向量的一半。但是,两个图中的向量的长度几乎相同。

python plot matplotlib

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

matplotlib 3D数据的2D切片

我没有找到任何关于此的内容,可能是因为我没有正确的命名法(即我不知道确切地如何要求它),但是无论如何,我都有一个3D numpy数组“ a”。我想识别并绘制a = 0的2D曲面。要弄清楚,数据是双精度浮点,在3D空间上平滑变化。曲面a = 0很有可能会“穿插”在数组的各个点之间,而并不完全恰好位于其中的任何一个点上。所以我需要可以插值的东西来找到a = 0曲面并将其绘制出来。matplotlib是否有现成的例程可以执行此操作?

python plot matplotlib surface scipy

6
推荐指数
2
解决办法
3736
查看次数

Fortran 中的可变长度参数列表?

Fortran 是否曾经像 C 那样处理任意长度的子例程参数列表?(顺便说一句,“礼物”对我想做的事情不起作用。)谢谢。

fortran arguments subroutine

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

你能“交换”C++ std 向量的切片吗?

如果我有两个 C++ 向量:

vector<int> a(5) {1,2,3,4,5};
vector<int> b(5) {6,7,8,9,10};
Run Code Online (Sandbox Code Playgroud)

有没有一种单行方法可以使用交换方法来交换 a 和 b 的切片?就像是

swap(a[something ... something], b[something ... something]);
Run Code Online (Sandbox Code Playgroud)

给予,例如

a等于{1,9,10,4,5}b等于{6,7,8,2,3}

c++ stdvector

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

Makefile Puzzle:多种编程语言

我有一个简单的测试Makefile:

hello: hello.o
.SUFFIXES: .c .f90 .o
.f90.o:
    pgf90 -c -o $@ $<
.c.o:
    cc -c -o $@ $<
Run Code Online (Sandbox Code Playgroud)

您不必告诉我它在同一目录中有foo.c和foo.f90会造成混淆.我永远不会真的这样做.我只是想知道Make如何处理一些先例.所以,当我只发出make命令时,make运行:

pgf90 -c -o hello.o hello.f90
cc hello.o -o hello
Run Code Online (Sandbox Code Playgroud)

当然,"cc"链接失败,因为"cc"无法链接FORTRAN对象以生成可执行文件.精细.但我的问题是:我已经尝试了一些我能想到的阻止make使用pgf90命令作为其第一个编译命令,并选择cc命令.我已经改变了后缀规则的顺序.我在.SUFFIXES语句中更改了后缀的顺序.唯一可行的方法是完全不使用.f90后缀规则.为什么会这样,可以改变吗?谢谢.(如果不言而喻,我的目录中确实有简单的hello.f90和hello.c源文件,并且编译和执行都很好.)

更新:使用-d进行运行.相关输出(AFAICT)如下所示:

Considering target file 'hello.o'.
 File 'hello.o' does not exist.
 Looking for an implicit rule for 'hello.o'.
 Trying pattern rule with stem 'hello'.
 Trying implicit prerequisite 'hello.c'.
Run Code Online (Sandbox Code Playgroud)

没有给"隐含的先决条件'hello.c'留下深刻的印象",make会在它之前尝试一大堆其他的东西

 Found an implicit rule for 'hello.o'.
  Considering target file 'hello.f90'.
   Looking for an implicit rule with stem 'hello.f90'
    .
    .
    .
   No …
Run Code Online (Sandbox Code Playgroud)

c makefile fortran90

5
推荐指数
1
解决办法
662
查看次数

numpy数组乘法与任意维度的数组

我有一个numpy数组A,它有形状(10,).

我也有,作为此时的,具有形状(10,3,5)一个numpy的数组B中.我想在这两者之间进行乘法以得到C,使得C [0,:,] = A [0]*B [0,:,],C [1] = A [1]*B [1 ,:,]]等

我不想用循环来解决这个问题,其中一个原因是事物的美学,另一个原因是这个代码需要非常通用.我希望用户能够输入几乎任何形状的任何B,只要前导尺寸为10.例如,我希望用户能够放入形状B(10,4).

那么:如何使用numpy实现这种乘法?谢谢.

ADDENDUM:有人问过例子.会变小.假设A是numpy数组[1,2,3],B是numpy数组[[1,2],[4,5],[7,8]].我希望两者的乘法得到[[1,2],[8,10],[21,24]]....

>>> a
array([1, 2, 3])
>>> b
array([[1, 2],
       [4, 5],
       [7, 8]])
>>> #result
>>> c
array([[ 1,  2],
       [ 8, 10],
       [21, 24]])
>>>
Run Code Online (Sandbox Code Playgroud)

python arrays numpy multiplication

5
推荐指数
1
解决办法
853
查看次数

gfortran中为零

有没有办法在gfortran强制下溢到下溢?

我不敢相信这是第一次有人问这个,但我找不到任何东西.Mea culpa如果这是重复的话.

fortran gfortran underflow

5
推荐指数
1
解决办法
873
查看次数

C++引用和返回值

我遇到了以下代码:

class MyClass {

// various stuff including ...
   double *myarray;

   double &operator() (const int n){
      return myarray[n];
   }
   double operator() (const int n) const {
      return myarray[n];
   }

// various other stuff ...
}
Run Code Online (Sandbox Code Playgroud)

那么"()"这两个重载的实际区别是什么?我的意思是,我知道"第一个返回引用一个double,第二个返回一个double",但这实际意味着什么呢?我什么时候使用那个?我何时会使用另一个?第二个(返回一个)似乎非常安全和直截了当.第一个在某种程度上是危险的吗?

c++ reference

5
推荐指数
1
解决办法
154
查看次数