小编Jay*_*rya的帖子

在班级中使用犰狳矩阵

我是一名物理学家,在课程编程方面经验不足.如果有人可以帮助我,我将不胜感激.我已经在python类中成功使用了numpy数组,但我在这里迷失了.

动机很简单.我需要使用一个带有几个矩阵的类作为私有成员,并对它们执行一些操作.请看以下内容.

#include<iostream>
#include<armadillo>

using namespace std;

class myclass{
    // a matrix
    double A[2][2];
public:
    int set_element(double);
};

int main(){
    myclass x;
    x.set_element(2.0);
}

int myclass::set_element(double num){
    // a function to assign a value to the first array element.
    A[0][0] = num;
    cout << A[0][0] << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这编译并正确运行.但是,如果我尝试使用犰狳矩阵,事情就行不通了.

#include<iostream>
#include<armadillo>

using namespace std;
using namespace arma;

class myclass{
private:
    // a matrix
    mat A(2,2);
public:
    int set_element(double);
};

int main(){
    myclass x;
    x.set_element(2.0);
}

int myclass::set_element(double num){ …
Run Code Online (Sandbox Code Playgroud)

c++ matrix armadillo

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

将.mat文件中的复杂数据作为numpy数组导入

我有一个关于元组的问题.我使用一个以.mat格式转储大输出3-D数组的程序.它们在MATLAB中运行良好.它们是较新的.mat格式(基于HDF5).假设我在MATLAB中生成一个10x10x10的复数3D矩阵并将其保存为trial.mat

a = rand(10,10,10) + 1i*rand(10,10,10);
save('trial.mat')
Run Code Online (Sandbox Code Playgroud)

现在我尝试在Python中加载变量a.这就是我的工作.

import numpy as np
import h5py
f = h5py.File('trial.mat','r')
a = np.array(f['a'])
print a
print np.shape(a)
Run Code Online (Sandbox Code Playgroud)

以下是我得到的输出的最后几行.

   (0.7551184371302334, 0.15987275885464014)
   (0.5261111725119932, 0.7314707154838205)
   (0.8501109979307012, 0.05369411719045292)
   (0.8160309248196381, 0.7143895270837854)]]]
(10L, 10L, 10L)
Run Code Online (Sandbox Code Playgroud)

数据是元组的3D数组.如何将其转换为复杂数字的3D numpy数组?我需要它进行进一步的分析.实际的阵列非常大(1.5 GB或更高).我的意思是(0.81,0.71)应该可以用作0.81 + 0.71j

我在Windows 7上使用MATLAB R2010a和Python 2.7.7,它是Anaconda 2.01(x86-64)发行版的一部分.

也许这与以下问题有关,但我不太确定. 如何通过h5py读取v7.3 mat文件?

将非常感谢帮助.

python matlab tuples numpy h5py

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

使用fftw与列主要方形矩阵(犰狳库)

我发现armadillo C++库非常便于矩阵计算.如何使用FFTW库对犰狳矩阵执行二维FFT?

据我所知,armadillo矩阵类以列主要顺序存储数据.如何将其传递给FFTW?fftw 3.3.3文档说

如果你有一个以列主要顺序存储的数组,并希望使用FFTW对其进行转换,那么很容易做到.创建计划时,只需以相反的顺序将数组的维度传递给计划程序.例如,如果您的数组是按列大顺序排列的三级N x M x L矩阵,则应该将数组的维度传递为L x M x N矩阵(从它的角度来看,它是FFTW)

鉴于创建计划的语法如下,我无法完全理解这意味着什么.

fftw_plan fftw_plan_dft_2d(int n0, int n1,
                            fftw_complex *in, fftw_complex *out,
                            int sign, unsigned flags);
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

c++ fft matrix fftw armadillo

4
推荐指数
1
解决办法
1385
查看次数

标签 统计

armadillo ×2

c++ ×2

matrix ×2

fft ×1

fftw ×1

h5py ×1

matlab ×1

numpy ×1

python ×1

tuples ×1