Я хотел бы спросить, если кто-нибудь знает, почему это не работает:Умножение - Матрица на мнимую единицу
Например, пусть
SparseMatrix<int> A
и
SparseMatrix<std::complex<float> > B
Я хотел бы выполните следующую математику:
B = i * A
Как код:
std::complex<float> c;
c=1.0i;
B=A.cast<std::complex<float> >()*c;
или эквивалент:
B=A.cast<std::complex<float> >()*1.0i;
Я ожидаю, что все действительные значения А мнимым в B, но есть только нули, как (0,0).
Пример:
#include <Eigen/Sparse>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace Eigen;
using std::cout;
using std::endl;
int main(int argc, char *argv[]){
int rows=5, cols=5;
SparseMatrix<int> A(rows,cols);
A.setIdentity();
SparseMatrix<std::complex<float> > B;
std::complex<float> c;
c=1i;
B=A.cast<std::complex<float> >()*1.0i;
//B=A.cast<std::complex<float> >()*c;
cout << B << endl;
return 0;
}
компилировать с: г ++ [имя] .cpp -o [имя]
Что я делаю неправильно?
Большое спасибо за помощь!
Помогает ли вам использовать I вместо i? Я читал в стандарте c (и, возможно, в этом контексте это другое), что я не представляю воображаемую единицу. Или иначе, если вы не <#include complex>, который будет определять нижний регистр i? –
Выше должно быть указано #include –
Спасибо за ваши предложения! К сожалению, я получаю те же результаты. – nik