本文整理汇总了C++中WolframLibraryData::MTensor_getReal方法的典型用法代码示例。如果您正苦于以下问题:C++ WolframLibraryData::MTensor_getReal方法的具体用法?C++ WolframLibraryData::MTensor_getReal怎么用?C++ WolframLibraryData::MTensor_getReal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WolframLibraryData
的用法示例。
在下文中一共展示了WolframLibraryData::MTensor_getReal方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: demo_TI_R
/* Gets the I0 th Real number from the rank 1 tensor T0 */
DLLEXPORT int demo_TI_R( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
MTensor T0;
mint I0;
mreal R0;
int err = LIBRARY_NO_ERROR;
T0 = MArgument_getMTensor(Args[0]);
I0 = MArgument_getInteger(Args[1]);
err = libData->MTensor_getReal(T0, &I0, &R0);
if (err) return err;
MArgument_setReal(Res, R0);
return LIBRARY_NO_ERROR;
}
示例2: demo_TII_R
/* Gets the I0,I1 th real element of T0 returning that value */
DLLEXPORT int demo_TII_R(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
MTensor T0;
mint I0, I1;
mreal res;
mint dims[2];
int err = LIBRARY_NO_ERROR;
T0 = MArgument_getMTensor(Args[0]);
I0 = MArgument_getInteger(Args[1]);
I1 = MArgument_getInteger(Args[2]);
dims[0] = I0;
dims[1] = I1;
err = libData->MTensor_getReal(T0, dims, &res);
MArgument_setReal(Res, res);
return err;
}
示例3: demo_TT_T
/**
* Same as demo_TI_R, but just to avoid copying
**/
DLLEXPORT int demo_TT_T(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
MTensor T0, T1, T2;
mint I0;
mreal R0;
int err = LIBRARY_NO_ERROR;
T0 = MArgument_getMTensor(Args[0]);
T1 = MArgument_getMTensor(Args[1]);
I0 = (libData->MTensor_getIntegerData(T1))[0];
err = libData->MTensor_getReal( T0, &I0, &R0);
if (err) return err;
err = libData->MTensor_new(MType_Real, 0, NULL, &T2);
if (err) return err;
(libData->MTensor_getRealData(T2))[0] = R0;
MArgument_setMTensor(Res, T2);
return LIBRARY_NO_ERROR;
}
示例4: demo_TTT_T
/**
* Intended to demonstrate working with rank 0 tensors.
*
* The arguments are three tensors.
* The first is a rank > 0 real tensor.
* The second is a rank 0 integer tensor.
* The third a rank 0 real tensor.
*
* The second argument is used as an index to find
* an element of the first, which is added to the
* third argument to form the result.
*
* The result is returned as a rank 0 real tensor.
**/
DLLEXPORT int demo_TTT_T(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) {
MTensor T_arg, T_I_arg, T_R_arg, T_res;
mint I0;
mreal R0, R1;
int err = LIBRARY_NO_ERROR;
T_arg = MArgument_getMTensor(Args[0]);
T_I_arg = MArgument_getMTensor(Args[1]);
T_R_arg = MArgument_getMTensor(Args[2]);
I0 = (libData->MTensor_getIntegerData(T_I_arg))[0];
R0 = (libData->MTensor_getRealData(T_R_arg))[0];
err = libData->MTensor_getReal( T_arg, &I0, &R1);
if (err) return err;
R0 = R0 + R1;
err = libData->MTensor_new(MType_Integer, 0, NULL, &T_res);
if (err) return err;
(libData->MTensor_getIntegerData( T_res))[0] = (mint) R0;
MArgument_setMTensor(Res, T_res);
return LIBRARY_NO_ERROR;
}
示例5: findCalibration
//.........这里部分代码省略.........
mint *D37;
MArgument FPA[4];
int err = 0;
Tinit = funStructCompile->GetInitializedMTensors(libData, 10);
T0_1 = MTensorInitializationData_getTensor(Tinit, 0);
T0_10 = MTensorInitializationData_getTensor(Tinit, 1);
T0_15 = MTensorInitializationData_getTensor(Tinit, 2);
T0_2 = MTensorInitializationData_getTensor(Tinit, 3);
T0_3 = MTensorInitializationData_getTensor(Tinit, 4);
T0_4 = MTensorInitializationData_getTensor(Tinit, 5);
T0_5 = MTensorInitializationData_getTensor(Tinit, 6);
T0_6 = MTensorInitializationData_getTensor(Tinit, 7);
T0_7 = MTensorInitializationData_getTensor(Tinit, 8);
T0_9 = MTensorInitializationData_getTensor(Tinit, 9);
T0_0 = &A1;
R0_0 = A2;
R0_1 = A3;
MArgument_getMTensorAddress(FPA[0]) = T0_0;
MArgument_getMTensorAddress(FPA[1]) = T0_1;
err = FP0(libData, 1, FPA, FPA[1]);/* CopyTensor */
if( err)
{
goto error_label;
}
D6 = MTensor_getDimensionsMacro(*T0_1);
I0_2 = D6[0];
I0_5 = I0_6;
dims[0] = I0_2;
err = funStructCompile->MTensor_allocate(T0_2, 3, 1, dims);
if( err)
{
goto error_label;
}
P7 = MTensor_getRealDataMacro(*T0_2);
D7 = MTensor_getDimensionsMacro(*T0_2);
I0_4 = I0_6;
goto lab15;
lab7:
{
mint S0[2];
S0[0] = I0_4;
S0[1] = I0_0;
err = libData->MTensor_getReal(*T0_1, S0, &R0_4);
if( err)
{
goto error_label;
}
}
I0_3 = D6[0];
{
mint S0 = FP1((void*) (&I0_7), (void*) (&I0_4), (void*) (&I0_3), 1, UnitIncrements, 4);/* Mod */
err = S0 == 0 ? 0 : LIBRARY_NUMERICAL_ERROR;
if( err)
{
goto error_label;
}
}
{
mint S0 = FP2((void*) (&I0_7), (void*) (&I0_7), (void*) (&I0_0), 1, UnitIncrements, 4);/* Plus */
err = S0 == 0 ? 0 : LIBRARY_NUMERICAL_ERROR;
if( err)
{
goto error_label;
}
}
{
示例6: findCarriers
DLLEXPORT int findCarriers(WolframLibraryData libData, MTensor A1, MTensor A2, mreal A3, mreal A4, mreal A5, MTensor *Res)
{
mbool B0_0;
mbool B0_1;
mbool B0_3;
mbool B0_4;
mbool B0_5;
mbool B0_6;
mint I0_1;
mint I0_2;
mint I0_3;
mint I0_4;
mint I0_5;
mint I0_7;
mint I0_10;
mint I0_11;
mint I0_12;
mreal R0_0;
mreal R0_1;
mreal R0_2;
mreal R0_3;
mreal R0_4;
mreal R0_5;
mreal R0_6;
mreal R0_9;
mreal R0_10;
mreal R0_13;
mreal R0_14;
mreal R0_15;
mreal R0_16;
MTensor* T0_0;
MTensor* T0_1;
MTensor* T0_2;
MTensor* T0_3;
MTensor* T0_4;
MTensor* T0_5;
MTensor* T0_6;
MTensor* T0_7;
MTensor* T0_8;
MTensor* T0_10;
MTensor* T0_11;
MTensor* T0_12;
MTensorInitializationData Tinit;
mint dims[3];
mint *D3;
mreal *P4;
mint *D4;
mreal *P6;
mint *D6;
mint *D8;
mreal *P9;
mreal *P11;
mint *D11;
mint *P12;
mint *D14;
mint *P15;
mint *D15;
mint *P16;
mint *D16;
mint *D17;
mint *P18;
mint *D23;
mint *D24;
MArgument FPA[4];
int err = 0;
Tinit = funStructCompile->GetInitializedMTensors(libData, 10);
T0_10 = MTensorInitializationData_getTensor(Tinit, 0);
T0_11 = MTensorInitializationData_getTensor(Tinit, 1);
T0_12 = MTensorInitializationData_getTensor(Tinit, 2);
T0_2 = MTensorInitializationData_getTensor(Tinit, 3);
T0_3 = MTensorInitializationData_getTensor(Tinit, 4);
T0_4 = MTensorInitializationData_getTensor(Tinit, 5);
T0_5 = MTensorInitializationData_getTensor(Tinit, 6);
T0_6 = MTensorInitializationData_getTensor(Tinit, 7);
T0_7 = MTensorInitializationData_getTensor(Tinit, 8);
T0_8 = MTensorInitializationData_getTensor(Tinit, 9);
T0_0 = &A1;
T0_1 = &A2;
R0_0 = A3;
R0_1 = A4;
R0_2 = A5;
MArgument_getMTensorAddress(FPA[0]) = T0_0;
MArgument_getMTensorAddress(FPA[1]) = T0_2;
err = FP0(libData, 1, FPA, FPA[1]);/* CopyTensor */
if( err)
{
goto error_label;
}
D3 = MTensor_getDimensionsMacro(*T0_2);
I0_2 = D3[0];
I0_5 = I0_6;
dims[0] = I0_2;
err = funStructCompile->MTensor_allocate(T0_3, 3, 1, dims);
if( err)
{
goto error_label;
}
P4 = MTensor_getRealDataMacro(*T0_3);
D4 = MTensor_getDimensionsMacro(*T0_3);
I0_4 = I0_6;
//.........这里部分代码省略.........
示例7: calculateFeedbackSignalsFromFirstAndSecondSideband
bool MathematicaPeakFinder::calculateFeedbackSignalsFromFirstAndSecondSideband(const MixedData& peaks, MixedData& feedback)
{
WolframLibraryData libData = 0;
WolframRTL_initialize(WolframLibraryVersion);
libData = WolframLibraryData_new(WolframLibraryVersion);
//Setup arguments
//Initialize peak tensor
MTensor peakTensor;
int err;
mint type = MType_Real;
mint rank = 2;
mint dims[2];
dims[0] = 4;
dims[1] = 2;
err = libData->MTensor_new(type, rank, dims, &peakTensor);
if(err != 0)
return false;
mint peakPos[2];
for(int i = 1; i <= dims[0]; i++) {
peakPos[0] = i;
for(int j = 1; j <= dims[1]; j++) {
peakPos[1] = j;
err = libData->MTensor_setReal(peakTensor, peakPos,
peaks.getVector().at(i-1).getVector().at(j-1).getDouble());
}
}
if(err != 0)
return false;
//Initialize result tensor
MTensor feedbackResults;
type = MType_Real;
rank = 1;
mint dimsRes[1];
dimsRes[0] = 2;
err = libData->MTensor_new(type, rank, dimsRes, &feedbackResults);
if(err != 0)
return false;
Initialize_getFeedbackSignalsFromFirstAndSecondSidebands(libData); //Begin call to Mathematica code
err = getFeedbackSignalsFromFirstAndSecondSidebands(libData, peakTensor, &feedbackResults);
Uninitialize_getFeedbackSignalsFromFirstAndSecondSidebands(libData); //End call to Mathematica code
if( err == 0) {
//Copy results of the feedback function
double value = 0;
mint pos[1];
feedback.clear();
for(int j = 1; j <= 2; j++) {
pos[0] = j;
err = libData->MTensor_getReal(feedbackResults, pos, &value);
feedback.addValue(value);
}
}
cout << "Feedback results:" << endl;
cout << feedback.print() << endl;
libData->MTensor_free(peakTensor);
libData->MTensor_free(feedbackResults);
return (err == 0);
}
示例8: findFirstAndSecondOrderSidebandPeaks
bool MathematicaPeakFinder::findFirstAndSecondOrderSidebandPeaks(const STI::Types::TDataMixedSeq& rawSidebandData,
const CalibrationResults_ptr& calibration,
double firstOrderSidebandSpacing,
double secondOrderSidebandSpacing,
double minimumX,
double targetRange,
MixedData& peaks,
double carrierOffset)
{
WolframLibraryData libData = 0;
WolframRTL_initialize(WolframLibraryVersion);
libData = WolframLibraryData_new(WolframLibraryVersion);
//Setup arguments
MTensor formatedSidebandData; //List of {x,y} pairs, with gaps when y is below threshold
if(!convertRawScopeData(libData, rawSidebandData, formatedSidebandData)) {
return false;
}
//Initialize calibration tensor
MTensor calTensor;
int err;
mint type = MType_Real;
mint rank = 2;
mint dims[2];
dims[0] = 2;
dims[1] = 2;
err = libData->MTensor_new(type, rank, dims, &calTensor);
if(err != 0)
return false;
if(!calibration->getPeaks(libData, &calTensor))
return false;
//Initialize results tensor
MTensor peakResults;
type = MType_Real;
rank = 2;
dims[2];
dims[0] = 4; //First and second order sidebands: { {+1, -1}, {+2, -2} }
dims[1] = 2; //{time, peak height}
err = libData->MTensor_new(type, rank, dims, &peakResults);
mreal firstOrderSidebandSpacingArg = firstOrderSidebandSpacing;
mreal secondOrderSidebandSpacingArg = secondOrderSidebandSpacing;
mreal minX = minimumX;
mreal targetRangeArg = targetRange;
mreal carrierOffsetArg = carrierOffset;
if(err == 0) {
Initialize_findFirstAndSecondOrderSidebands(libData); //Begin call to Mathematica code
err = findFirstAndSecondOrderSidebands(libData, formatedSidebandData, calTensor, firstOrderSidebandSpacingArg, secondOrderSidebandSpacingArg, minX, targetRangeArg, carrierOffsetArg, &peakResults);
Uninitialize_findFirstAndSecondOrderSidebands(libData); //End call to Mathematica code
}
if( err == 0) {
//Copy results of peak search
double value = 0;
mint pos[2];
peaks.clear();
MixedData peak;
for(int i = 1; i <= 4; i++) {
pos[0] = i;
peak.clear();
for(int j = 1; j <= 2; j++) {
pos[1] = j;
err = libData->MTensor_getReal(peakResults, pos, &value);
peak.addValue(value);
}
peaks.addValue(peak);
}
}
cout << "Peak find results:" << endl;
cout << peaks.print() << endl;
libData->MTensor_free(formatedSidebandData);
libData->MTensor_free(calTensor);
libData->MTensor_free(peakResults);
return (err == 0);
}
示例9: findCalibrationPeaks
bool MathematicaPeakFinder::findCalibrationPeaks(const STI::Types::TDataMixedSeq& rawCalData, double FSR_s, double minimumX,
const CalibrationResults_ptr& calResults)
{
WolframLibraryData libData = 0;
WolframRTL_initialize(WolframLibraryVersion);
libData = WolframLibraryData_new(WolframLibraryVersion);
//Setup arguments
MTensor formatedScopeCalibrationData; //List of {x,y} pairs, with gaps when y is below threshold
if(!convertRawScopeData(libData, rawCalData, formatedScopeCalibrationData)) {
return false;
}
////test
//mint lens[2];
//int err2;
//double value;
//
//lens[0] = 4;
//for(unsigned j = 1; j < 50; j++) {
// lens[0] = j;
// lens[1] = 1;
// err2 = libData->MTensor_getReal(formatedScopeCalibrationData, lens, &value);
// cout << "(" << value <<", ";
// lens[1] = 2;
// err2 = libData->MTensor_getReal(formatedScopeCalibrationData, lens, &value);
// cout << value << ")" << endl;
//}
MTensor calibration;
int err;
mint type = MType_Real;
mint rank = 2;
mint dims[2];
dims[0] = 2;
dims[1] = 2;
err = libData->MTensor_new(type, rank, dims, &calibration);
MTensor* result = &calibration;
cout << "In Peak Finder: error = " << err << endl;
if(err == 0) {
Initialize_findCalibration(libData); //Begin call to Mathematica code
mreal fsrTime = FSR_s;
mreal minX = minimumX;
err = findCalibration(libData, formatedScopeCalibrationData, fsrTime, minX, &calibration);
cout << "Calibration Result:" << endl;
mint lens[2];
int err2;
double value = 0;
for(unsigned j = 1; j <= 2; j++) {
lens[0] = j;
lens[1] = 1;
err2 = libData->MTensor_getReal(calibration, lens, &value);
cout << "(" << value <<", ";
lens[1] = 2;
err2 = libData->MTensor_getReal(calibration, lens, &value);
cout << value << ")" << endl;
}
if(err == 0) {
calResults->savePeaks(libData, &calibration);
}
Uninitialize_findCalibration(libData); //End call to Mathematica code
}
libData->MTensor_free(formatedScopeCalibrationData);
libData->MTensor_free(calibration);
result = 0;
return (err == 0);
}
示例10: getFeedbackSignalsFromFirstAndSecondSidebands
DLLEXPORT int getFeedbackSignalsFromFirstAndSecondSidebands(WolframLibraryData libData, MTensor A1, MTensor *Res)
{
mint I0_4;
mreal R0_0;
mreal R0_1;
mreal R0_2;
mreal R0_3;
mreal R0_4;
MTensor* T0_0;
MTensor* T0_1;
MTensor* T0_2;
MTensor* T0_3;
MTensor* T0_4;
MTensorInitializationData Tinit;
mint *D3;
mreal *P4;
MArgument FPA[4];
int err = 0;
Tinit = funStructCompile->GetInitializedMTensors(libData, 4);
T0_1 = MTensorInitializationData_getTensor(Tinit, 0);
T0_2 = MTensorInitializationData_getTensor(Tinit, 1);
T0_3 = MTensorInitializationData_getTensor(Tinit, 2);
T0_4 = MTensorInitializationData_getTensor(Tinit, 3);
T0_0 = &A1;
MArgument_getMTensorAddress(FPA[0]) = T0_0;
MArgument_getIntegerAddress(FPA[1]) = &I0_1;
MArgument_getIntegerAddress(FPA[2]) = &I0_0;
MArgument_getMTensorAddress(FPA[3]) = T0_1;
err = FP0(libData, 3, FPA, FPA[3]);/* Take */
if( err)
{
goto error_label;
}
MArgument_getMTensorAddress(FPA[0]) = T0_0;
MArgument_getIntegerAddress(FPA[1]) = &I0_1;
MArgument_getIntegerAddress(FPA[2]) = &I0_0;
MArgument_getMTensorAddress(FPA[3]) = T0_2;
err = FP1(libData, 3, FPA, FPA[3]);/* Drop */
if( err)
{
goto error_label;
}
{
mint S0[2];
S0[0] = I0_2;
S0[1] = I0_0;
err = libData->MTensor_getReal(*T0_1, S0, &R0_0);
if( err)
{
goto error_label;
}
}
{
mint S0[2];
S0[0] = I0_0;
S0[1] = I0_0;
err = libData->MTensor_getReal(*T0_1, S0, &R0_1);
if( err)
{
goto error_label;
}
}
R0_2 = -R0_1;
R0_0 = R0_0 + R0_2;
{
int S0[2];
void* S1[2];
S0[0] = 2;
S1[0] = 0;
S0[1] = 0;
S1[1] = (void*) (&I0_0);
err = funStructCompile->MTensor_getPart(T0_4, *T0_1, 2, S0, S1);
if( err)
{
goto error_label;
}
}
D3 = MTensor_getDimensionsMacro(*T0_4);
MArgument_getMTensorAddress(FPA[0]) = T0_4;
MArgument_getIntegerAddress(FPA[1]) = &I0_3;
MArgument_getRealAddress(FPA[2]) = &R0_2;
err = FP2(libData, 2, FPA, FPA[2]);/* TotalAll */
if( err)
{
goto error_label;
}
{
int S0[2];
void* S1[2];
S0[0] = 2;
S1[0] = 0;
S0[1] = 0;
S1[1] = (void*) (&I0_0);
err = funStructCompile->MTensor_getPart(T0_4, *T0_1, 2, S0, S1);
if( err)
{
goto error_label;
}
}
D3 = MTensor_getDimensionsMacro(*T0_4);
//.........这里部分代码省略.........