0

私はいくつかの.txtファイルを次のようにしています:

1050.00 68.13

1048.00 67.89

1046.00 67.62

1044.00 67.30

1042.00 66.91

[ ... ]

これを別の行列に掛けたい。

私の問題は、このデータを読み取ってマトリックスに格納する方法がわからないことです。

誰かが私を助けることができるアイデアを持っていますか?

4

3 に答える 3

3

データを に保存し、 、、およびvector<vector<double>>を使用して読み取ります。std::getlinestd::istringstreamoperator>>

#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <iterator>
#include <algorithm>
struct Matrix {
  std::vector<std::vector<double> > data;
  Matrix(const std::string& filename) {
    std::ifstream inFile(filename.c_str());
    std::string inLine;
    while(std::getline(inFile, inLine)) {
      std::istringstream inLineStream(inLine);
      std::vector<double> inLineData(
        (std::istream_iterator<double>(inLineStream)),
        std::istream_iterator<double>());
      data.push_back(inLineData);
    }
  }
  Matrix operator*(const Matrix& rhs) { ... };
};

int main () {
  Matrix a("a.txt");
  Matrix b("b.txt");
  Matrix c(a * b);
}
于 2012-05-03T15:18:29.867 に答える
0

このように読むことができます:

char *fname = "matrix.txt";
ifstream infile(fname);

float f;
while (infile >> f) {
   //store f to matrix
}

Web には多数の maxtrix クラスの実装サンプルがあり、そのうちの 1 つがあり ます。

于 2012-05-03T15:14:26.917 に答える
0

「マトリックス」とは?

ある種の「行列ライブラリ」がある場合は、その関数を使用するだけです。

行列を自分で実装する場合は、テキストファイルを 1 行ずつ (fgets()) 読み取り、sscanf() を使用して項目を読み取ります。

お役に立てれば。

于 2012-05-03T15:12:03.753 に答える