欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++調(diào)用Matlab函數(shù)求特征值

 更新時(shí)間:2019年06月17日 11:19:37   作者:xyzZZ_  
這篇文章主要為大家詳細(xì)介紹了C++調(diào)用Matlab函數(shù)求特征值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近需要用到C++和Matlab的混編,記錄一下學(xué)習(xí)過(guò)程。

要實(shí)現(xiàn)的是調(diào)用Matlab函數(shù),求矩陣前k個(gè)最小的特征值及其特征向量。

//C++
 
#include "engine.h" //使用Matlab引擎需要包含的頭文件
#include <iostream>
using namespace std;
int main()
{
 Engine *m_engine; //創(chuàng)建Matlab引擎
 m_engine = NULL; //初始化引擎
 
 if((!m_engine && !(m_engine = engOpen(NULL)))) //打開(kāi)引擎,此時(shí)會(huì)打開(kāi)一個(gè)Matlab命令行窗口
 {
  return -1;
 }
 engSetVisible(m_engine,1); //將命令行窗口設(shè)為可見(jiàn)
 
 char buffer[255]; //記錄調(diào)試信息,方便調(diào)試
 engOutputBuffer(m_engine, buffer, 255); 
 
 
 double A[3][3] = {-1,1,0,
   -4,3,0,
    1,0,2}; 
 mxArray* AObj = mxCreateDoubleMatrix(3, 3, mxREAL); //創(chuàng)建Matlab的矩陣(大小3*3,實(shí)數(shù))
 
 memcpy(mxGetPr(AObj), A, 3*sizeof(double)); //將C++的數(shù)據(jù)傳入Matlab中
 
 engPutVariable(m_engine, "A", AObj); //將AObj的值賦給A
 
  engEvalString(m_engine, "cd('E:\\MatlabScripts')"); //進(jìn)入Matlab代碼的路徑 
 
  //調(diào)用Matlab中定義的函數(shù)“computeEigens”,文件名需與函數(shù)名一致,即“computeEigens.m”
  int k = 2;
 engEvalString(m_engine, "[eigVector,eigValue] = computeEigens(A, k);"); 
 
  //存儲(chǔ)計(jì)算結(jié)果
 engEvalString(m_engine,"save('E:\\eigVec_eigV.mat','eigVector','eigValue');");
 
 printf("%s", buffer);
 
 mxDestroyArray(AObj); //銷(xiāo)毀Matlab數(shù)組
 
 if (m_engine) //關(guān)閉Matlab引擎
 {
 engClose(m_engine);
 m_engine = NULL;
 }
 
 return 0;
 
}
%調(diào)用的Matlab代碼
%E:\MatlabScripts\computeEigens.m
 
function [ eigVector, eigValue ] = computeEigens( M, n_Eigens ) %n_Eigens為要求的特征值數(shù)量
 [EigenVectors,EigenValues] = eig(M);
 [sortedEigenValues, index] = sort(diag(EigenValues));
 eigValue = sortedEigenValues(1:n_Eigens);
 idx = index(1:n_Eigens);
 eigVector = EigenVectors(:,idx);
 
end

求稀疏矩陣的特征值

后來(lái)發(fā)現(xiàn)eig不能用于求解稀疏矩陣,會(huì)報(bào)“Error using eig”的錯(cuò),要改用eigs(A, k, sigma),sigma='sm'時(shí)表示求稀疏矩陣A的前k個(gè)絕對(duì)值最小的特征值及其特征向量。sigma的其他取值含義為:'lm' 絕對(duì)值最大的特征值;'sm' 絕對(duì)值最小的特征值;'la'最的大特征值;'sa'最小的特征值;'lr' 最大實(shí)部;'sr' 最小實(shí)部;'li' 最大虛部;'si'最小虛部。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Protocol Buffer技術(shù)深入理解(C++實(shí)例)

    Protocol Buffer技術(shù)深入理解(C++實(shí)例)

    C++實(shí)例Protocol Buffer技術(shù)詳解,感興趣的朋友可以了解下
    2013-01-01
  • C/C++語(yǔ)言中結(jié)構(gòu)體的內(nèi)存分配小例子

    C/C++語(yǔ)言中結(jié)構(gòu)體的內(nèi)存分配小例子

    當(dāng)未用 #pragma 指令指定編譯器的對(duì)齊位數(shù)時(shí),結(jié)構(gòu)體按最長(zhǎng)寬度的數(shù)據(jù)成員的寬度對(duì)齊;當(dāng)使用了 #pragma 指令指定編譯器的對(duì)齊位數(shù)時(shí),結(jié)構(gòu)體按最長(zhǎng)寬度的數(shù)據(jù)成員的寬度和 #pragma 指令指定的位數(shù)中的較小值對(duì)齊
    2013-10-10
  • C++實(shí)現(xiàn)的求解多元一次方程示例

    C++實(shí)現(xiàn)的求解多元一次方程示例

    這篇文章主要介紹了C++實(shí)現(xiàn)的求解多元一次方程,涉及C++矩陣運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • C++中const用法小結(jié)

    C++中const用法小結(jié)

    C++ const 允許指定一個(gè)語(yǔ)義約束,編譯器會(huì)強(qiáng)制實(shí)施這個(gè)約束,允許程序員告訴編譯器某值是保持不變的。如果在編程中確實(shí)有某個(gè)值保持不變,就應(yīng)該明確使用const,這樣可以獲得編譯器的幫助。
    2016-04-04
  • C語(yǔ)言中`||`的短路機(jī)制詳解

    C語(yǔ)言中`||`的短路機(jī)制詳解

    在C語(yǔ)言中,邏輯或運(yùn)算符(||)是一種常用的邏輯運(yùn)算符,用于組合多個(gè)條件表達(dá)式,C語(yǔ)言中的邏輯或運(yùn)算符具有短路機(jī)制,這是一種非常重要的概念,本文將深入解釋C語(yǔ)言中的||短路機(jī)制以及其在編程中的應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • C語(yǔ)言超全面覆蓋操作符知識(shí)點(diǎn)

    C語(yǔ)言超全面覆蓋操作符知識(shí)點(diǎn)

    C?語(yǔ)言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符等。讓我們通讀本篇來(lái)詳細(xì)了解吧
    2022-06-06
  • c/c++ 奇技淫巧(一些c語(yǔ)言的技巧)

    c/c++ 奇技淫巧(一些c語(yǔ)言的技巧)

    這篇文章主要介紹了c/c++ 奇技淫巧,需要的朋友可以參考下
    2017-03-03
  • C++實(shí)現(xiàn)浮點(diǎn)數(shù)精確加法

    C++實(shí)現(xiàn)浮點(diǎn)數(shù)精確加法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)浮點(diǎn)數(shù)精確加法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Qt在線安裝加速的實(shí)現(xiàn)

    Qt在線安裝加速的實(shí)現(xiàn)

    本文主要介紹了Qt在線安裝加速的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析

    C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析

    這篇文章主要介紹了C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析 本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05

最新評(píng)論