私はいくつかの.txtファイルを次のようにしています:
1050.00 68.13
1048.00 67.89
1046.00 67.62
1044.00 67.30
1042.00 66.91
[ ... ]
これを別の行列に掛けたい。
私の問題は、このデータを読み取ってマトリックスに格納する方法がわからないことです。
誰かが私を助けることができるアイデアを持っていますか?
データを に保存し、 、、およびvector<vector<double>>
を使用して読み取ります。std::getline
std::istringstream
operator>>
#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);
}
このように読むことができます:
char *fname = "matrix.txt";
ifstream infile(fname);
float f;
while (infile >> f) {
//store f to matrix
}
Web には多数の maxtrix クラスの実装サンプルがあり、そのうちの 1 つがあり ます。
「マトリックス」とは?
ある種の「行列ライブラリ」がある場合は、その関数を使用するだけです。
行列を自分で実装する場合は、テキストファイルを 1 行ずつ (fgets()) 読み取り、sscanf() を使用して項目を読み取ります。
お役に立てれば。