In Matlab, können wir den max, min, und auch die Position des komplexen Vektors erhalten:Wie kann ich Maximum, Minimum und Position des Vektorkomplexwerts in C++ erhalten?
[mag_x idx_x] = max(abs(X));
[mag_y idx_y] = max(abs(Y));
Ich weiß, dass wir die ähnliche mit C++ tun können, weil Matlab baut von C++ ist. Aber ich konnte es nicht herausfinden. Ich habe auch unvollständigen Code und arbeite noch daran:
#include <iostream> // std::cout
#include <algorithm> // std::min_element, std::max_element
#include <vector>
#include <complex>
#include <iostream>
int main()
{
//typedef std::complex <double> C
vector <complex<short> > vec;
vec.push_back (complex <short> (1,1));
vec.push_back (complex <short> (1,2));
vec.push_back (complex <short> (3,4));
vec.push_back (complex <short> (0,0));
vec.push_back (complex <short> (4,8));
vec.push_back (complex <short> (0,0));
vec.push_back (complex <short> (2,3));
vec.push_back (complex <short> (1,1));
int size = sizeof(x_vec)/sizeof(x_vec[0]);
for(int i =0; i < size; i++)
{
cout << x_vec[i] << endl;
}
...
return 0;
}
ich auch einen Blick auf dem Beispielcode von diesem Link: http://www.cplusplus.com/reference/algorithm/max_element/ aber nur für Vektor arbeiten.
Auch wenn ich die size = sizeof(x_vec)/sizeof(x_vec[0]);
berechnen Ich erwarte size = 8 (wegen 8 Vektor-Komplex oben), aber ich habe mich nur size = 6.
, wenn die Größe des Vektors zu finden, verwenden Sie 'vec.size()'. Die sizeof-Berechnung ist eine c-style-Methode, und Sie wenden sie auf ein Vektorobjekt an (das normalerweise drei Zeiger enthält und daher die Größe von drei Zeigern hat) und sein erstes Element (das die Größe eines beliebigen Typs hat) der Vektor speichert) – jaggedSpire
Darüber hinaus ist es unklar, was Sie mit minimalem Maximum und Position in diesem Kontext genau meinen - Sie könnten sich auf den Eintrag im Vektor mit der kleinsten/größten Größe beziehen und den Index dieses Elements erhalten. Oder Sie könnten nach der kleineren/größeren der realen und imaginären Zahlen fragen, die jede komplexe Zahl bilden, und eine Angabe darüber, welche welche ist. – jaggedSpire
In der Tat, wenn Sie jedes Element in 'vec' besuchen möchten, verwenden Sie stattdessen ein' range-based for': for (const auto & c: vec) {cout << c << endl; } ' –