код Matlab:Портирование инверсии 1000x1000 матрицы комплексных чисел из Matlab на C++
invD = inv(D);
Dew=2*invD-E;
D является 1000x1000 матрицей комплексных чисел. Он инвертируется через 0,5 сек или меньше.
Я пробовал несколько способов портировать этот код на C++, используя разные подходы, но он всегда медленнее, чем 10 секунд. Что я делаю не так? Как возможно, Matlab оптимизирует этот код?
Я не написал этот код, я просто должен его портировать. Извините, мне гораздо лучше в кодировании, что в математике.
Matlab имеет высоко оптимизированный код, который оптимальным образом использует правильные структуры данных, многопоточность и кэширование CPU. И я не удивлюсь, если он использует другой код для разных процессоров, чтобы получить преимущество. Вот почему это так быстро. – liori
Является ли матрица разреженной? –
Это действительно тяжелая проблема. Многие мысли от очень умных людей вошли в код, который является частью MATLAB. Нет никаких шансов, что вы, как один разработчик с небольшим опытом, приблизитесь к производительности MATLAB для таких операций. Вы должны использовать доступные библиотеки C++ для этой работы. – us2012