最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • 淺析C/C++ 中return *this和return this的區(qū)別

    淺析C/C++ 中return *this和return this的區(qū)別

    return *this返回的是當(dāng)前對(duì)象的克隆或者本身,return this返回當(dāng)前對(duì)象的地址,下面通過(guò)本文給大家介紹C/C++ 中return *this和return this的區(qū)別,感興趣的朋友一起看看吧
    2019-10-10
  • 使用C語(yǔ)言編寫(xiě)圣誕表白程序

    使用C語(yǔ)言編寫(xiě)圣誕表白程序

    圣誕節(jié)快到了,讓我們用C語(yǔ)言制作一個(gè)圣誕表白程序吧,下面通過(guò)本文學(xué)習(xí)下實(shí)現(xiàn)代碼
    2016-12-12
  • c++和python實(shí)現(xiàn)順序查找實(shí)例

    c++和python實(shí)現(xiàn)順序查找實(shí)例

    這篇文章主要介紹了c++和python實(shí)現(xiàn)順序查找實(shí)例,流程即將目標(biāo)數(shù)值和數(shù)據(jù)庫(kù)中的每個(gè)數(shù)值進(jìn)行比較,如果相同則搜索完成,如果不同則繼續(xù)比較下一處,下面來(lái)看看具體的實(shí)例操作吧,需要的朋友可以參考一下
    2022-03-03
  • C++11互斥量的具體使用

    C++11互斥量的具體使用

    互斥量是一種同步原語(yǔ),是一種線(xiàn)程同步的手段,用來(lái)保護(hù)多線(xiàn)程同時(shí)訪(fǎng)問(wèn)的共享數(shù)據(jù),本文主要介紹了C++11互斥量的具體使用,感興趣的可以了解一下
    2023-11-11
  • Dijkstra最短路徑算法實(shí)現(xiàn)代碼

    Dijkstra最短路徑算法實(shí)現(xiàn)代碼

    這篇文章主要介紹了Dijkstra最短路徑算法實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2013-12-12
  • QT中對(duì)話(huà)框的使用示例詳解

    QT中對(duì)話(huà)框的使用示例詳解

    這篇文章主要為大家詳細(xì)介紹了Qt中對(duì)話(huà)框的使用,以及QMessageBox類(lèi)中常見(jiàn)函數(shù)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-11-11
  • C++中類(lèi)型推斷(auto和decltype)的使用

    C++中類(lèi)型推斷(auto和decltype)的使用

    在C++11之前,每個(gè)數(shù)據(jù)類(lèi)型都需要在編譯時(shí)顯示聲明,在運(yùn)行時(shí)限制表達(dá)式的值,但在C++的新版本之后,引入了 auto 和 decltype等關(guān)鍵字,本文就來(lái)介紹一下C++中類(lèi)型推斷(auto和decltype)的使用,感興趣的可以了解一下
    2023-12-12
  • C語(yǔ)言中結(jié)構(gòu)體(struct)的幾種初始化方法

    C語(yǔ)言中結(jié)構(gòu)體(struct)的幾種初始化方法

    相信大家都知道struct結(jié)構(gòu)體是C語(yǔ)言中非常重要的復(fù)合類(lèi)型,初始化的方法很多,那么小編下面對(duì)這些方法進(jìn)行總結(jié),便于自己和大家以后查閱,有需要的可以參考借鑒。
    2016-08-08
  • Qt快速讀取大文件最后一行內(nèi)容解決方案

    Qt快速讀取大文件最后一行內(nèi)容解決方案

    這篇文章主要給大家介紹了關(guān)于Qt如何快速讀取大文件最后一行內(nèi)容的解決方案,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Qt具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • 老生常談C++ 中的繼承

    老生常談C++ 中的繼承

    這篇文章主要介紹了C++ 中的繼承,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評(píng)論

出国| 苏尼特右旗| 九台市| 宁安市| 突泉县| 双流县| 黎川县| 宜城市| 广丰县| 哈巴河县| 阜城县| 象州县| 台江县| 嘉祥县| 上饶市| 新竹市| 广元市| 民和| 城固县| 扎鲁特旗| 惠来县| 瓦房店市| 云阳县| 永嘉县| 东平县| 阳西县| 苏尼特右旗| 东海县| 简阳市| 册亨县| 九台市| 苏州市| 新余市| 青铜峡市| 怀宁县| 那曲县| 武乡县| 繁昌县| 百色市| 定日县| 黄浦区|