【问题标题】:Store multiple matrices (GSL) in an map在地图中存储多个矩阵 (GSL)
【发布时间】:2017-12-06 12:47:07
【问题描述】:

我有多个矩阵,我想将它们存储在某个 c/c++ 对象中。我对 c/c++ 还是很陌生,但有人告诉我这是这样做的一种方法。

  1. 创建地图
  2. 在地图的键处存储矩阵

这几乎是working MWE(如果它有效,我不需要问这个问题):

#include <map>
#include <stdio.h>
#include <stdio.h>
#include <gsl/gsl_matrix.h>

int
main (void)
{
  int i, j; 
  std::map<int,double> test;
  gsl_matrix * m = gsl_matrix_alloc (10, 3);

  for (i = 0; i < 10; i++)
    for (j = 0; j < 3; j++)
      gsl_matrix_set (m, i, j, 0.23 + 100*i + j);
  // store in map
  test[1] = m;
  gsl_matrix_free (m);

  return 0;
}

这一行让我变得不确定(并引发了错误):

std::map<int,double> test;

因为gsl_matrix 是一个结构,我相信这与我想做的事情不相容。错误如下:

cannot convert gsl_matrix* to std::map<int, double>::mapped_type {aka double} in assignment

确切地说,我想做的类似于 python,我们可以像这样将对象存储到字典中:

import numpy as np
test = {}
test['a'] = np.array([[1,2],[2,3]])
test['b'] = np.array([[1,2],[3,3]])
test['c'] = np.array([[1,3],[5,3]])
test['d'] = np.array([[1,5],[6,3]])
.
.
.

如何使用gsl 进行最佳复制?

【问题讨论】:

    标签: python c++ dictionary matrix gsl


    【解决方案1】:

    首先,我不是 C++ 程序员!

    但是我很确定您想要将映射的值指定为gsl_matrix *。以下编译没有任何错误,但是我认为您可能需要实现 std::map 运算符。

    #include <map>
    #include <stdio.h>
    #include <stdio.h>
    #include <gsl/gsl_matrix.h>
    
    int
    main (void)
    {
            int i;
            int j;
            std::map<int, gsl_matrix *> test;
    
            gsl_matrix * m = gsl_matrix_alloc (10, 3);
    
            for (i = 0; i < 10; i++) {
                    for (j = 0; j < 3; j++) {
                            gsl_matrix_set(m, i, j, 0.23 + 100*i + j);
                    }
            }
            // store in map
            test[1] = m;
            gsl_matrix_free(m);
            return 0;
    }
    

    然后编译:

    g++ -o test test.cpp -lgsl -lgslcblas
    

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 2019-09-04
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多