mysvd.cpp

来自「从MatlabSimulink模型到代码实现」· C++ 代码 · 共 35 行

CPP
35
字号
#include "stdafx.h"
#include "matlab.h"

static double data[] = { 21, 3, 15, 57, 12, 83, 6, 90 };
int mysvd()
{
    /* Initialize pointers to array arguments */
    mxArray *X = NULL;
    mxArray *U = NULL, *S = NULL, *V = NULL;
    mlfEnterNewContext(0, 0);
    mlfAssign(&X, mlfDoubleMatrix(4, 2, data, NULL));
    /* Compute the singular value decomposition and print it */
    mlfAssign(&S, mlfSvd(NULL, NULL, X, NULL));
    mlfPrintf("One input, one output:\n");
    mlfPrintf("S = \n"); mlfPrintMatrix(S);
    /* Multiple output arguments */
    mlfAssign(&U, mlfSvd(&S, &V, X, NULL));
    mlfPrintf("One input, three outputs:\n");
    mlfPrintf("U = \n"); mlfPrintMatrix(U); 
    mlfPrintf("S = \n"); mlfPrintMatrix(S);
    mlfPrintf("V = \n"); mlfPrintMatrix(V);
    /* Multiple input and output arguments */
    mlfAssign(&U, mlfSvd(&S, &V, X, mlfScalar(0.0)));
    mlfPrintf("Two inputs, three outputs:\n");
    mlfPrintf("U = \n"); mlfPrintMatrix(U);
    mlfPrintf("S = \n"); mlfPrintMatrix(S);
    mlfPrintf("V = \n"); mlfPrintMatrix(V);
    mxDestroyArray(X);
    mxDestroyArray(U);
    mxDestroyArray(S);
    mxDestroyArray(V);
    mlfRestorePreviousContext(0, 0);
    return(EXIT_SUCCESS);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?