当前位置: 首页>>代码示例>>C++>>正文


C++ AMnDIndex::flatIndexInArrayOfSize方法代码示例

本文整理汇总了C++中AMnDIndex::flatIndexInArrayOfSize方法的典型用法代码示例。如果您正苦于以下问题:C++ AMnDIndex::flatIndexInArrayOfSize方法的具体用法?C++ AMnDIndex::flatIndexInArrayOfSize怎么用?C++ AMnDIndex::flatIndexInArrayOfSize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AMnDIndex的用法示例。


在下文中一共展示了AMnDIndex::flatIndexInArrayOfSize方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: setValue

bool AMInMemoryDataStore::setValue(const AMnDIndex &scanIndex, int measurementId, const double *inputData) {
	// scan axis index doesn't provide enough / too many dimensions
	if(scanIndex.rank() != axes_.count())
		return false;

	if((unsigned)measurementId >= (unsigned)measurements_.count())
		return false;	// invalid measurement specified;

	// scalar scan space:
	if(axes_.count() == 0) {
		AMIMDSMeasurement& measurement = scalarScanPoint_[measurementId];
		for(int i=0,cc=measurement.size(); i<cc; ++i)
			measurement[i] = inputData[i];
	}
	// higher dimension scan space:
	else {
		int flatScanIndex = scanIndex.flatIndexInArrayOfSize(scanSize_);
#ifdef AM_ENABLE_BOUNDS_CHECKING
		if(flatScanIndex >= scanPoints_.count())
			return false;
#endif
		AMIMDSMeasurement& measurement = scanPoints_[flatScanIndex][measurementId];
		for(int i=0,cc=measurement.size(); i<cc; ++i)
			measurement[i] = inputData[i];
	}

	emitDataChanged(scanIndex, scanIndex, measurementId);
	return true;
}
开发者ID:,项目名称:,代码行数:29,代码来源:

示例2: value

AMNumber AMInMemoryDataStore::value(const AMnDIndex &scanIndex, int measurementId, const AMnDIndex &measurementIndex) const {

	// scan axis index doesn't provide enough / too many dimensions
	if(scanIndex.rank() != axes_.count())
		return AMNumber(AMNumber::DimensionError);

	if((unsigned)measurementId >= (unsigned)measurements_.count())
		return AMNumber(AMNumber::InvalidError);	// invalid measurement specified;

	if(measurementIndex.rank() != measurements_.at(measurementId).rank())
		return AMNumber(AMNumber::DimensionError);

	int flatMeasurementIndex = flatIndexForMeasurement(measurementId, measurementIndex);

	if(axes_.count() == 0) {
#ifdef AM_ENABLE_BOUNDS_CHECKING
		if(flatMeasurementIndex >= scalarScanPoint_.at(measurementId).size())
			return AMNumber(AMNumber::OutOfBoundsError);
#endif
		return scalarScanPoint_.at(measurementId).at(flatMeasurementIndex);
	}
	else { // higher dimensions:
		int flatScanIndex = scanIndex.flatIndexInArrayOfSize(scanSize_);
#ifdef AM_ENABLE_BOUNDS_CHECKING
		if(flatScanIndex >= scanPoints_.count())
			return AMNumber(AMNumber::OutOfBoundsError);
		if(flatMeasurementIndex >= scanPoints_.at(flatScanIndex).at(measurementId).size())
			return AMNumber(AMNumber::OutOfBoundsError);
#endif
		return scanPoints_.at(flatScanIndex).at(measurementId).at(flatMeasurementIndex);
	}
}
开发者ID:,项目名称:,代码行数:32,代码来源:

示例3: AMnDIndex

void AM3DAdditionAB::computeCachedValues() const
{
	AMnDIndex start = AMnDIndex();
	AMnDIndex end = AMnDIndex();

	if (dirtyIndices_.isEmpty()){

		start = AMnDIndex(rank(), AMnDIndex::DoInit);
		end = size()-1;
	}

	else {

		start = dirtyIndices_.first();
		end = dirtyIndices_.last();
		end[rank()-1] = size(rank()-1);
	}

	int totalSize = start.totalPointsTo(end);
	int flatStartIndex = start.flatIndexInArrayOfSize(size());
	QVector<double> data = QVector<double>(totalSize);
	sources_.at(0)->values(start, end, data.data());

	// Do the first data source separately to initialize the values.
	memcpy(cachedData_.data()+flatStartIndex, data.constData(), totalSize*sizeof(double));
	cachedData_ = data;

	// Iterate through the rest of the sources.
	for (int i = 1, count = sources_.size(); i < count; i++){

		sources_.at(i)->values(start, end, data.data());

		for (int j = 0; j < totalSize; j++)
			cachedData_[flatStartIndex+j] += data.at(j);
	}

	if (dirtyIndices_.isEmpty())
		cachedDataRange_ = AMUtility::rangeFinder(cachedData_);

	else{
		AMRange cachedRange = AMUtility::rangeFinder(cachedData_.mid(flatStartIndex, totalSize));

		if (cachedDataRange_.minimum() > cachedRange.minimum())
			cachedDataRange_.setMinimum(cachedRange.minimum());

		if (cachedDataRange_.maximum() < cachedRange.maximum())
			cachedDataRange_.setMaximum(cachedRange.maximum());
	}

	cacheUpdateRequired_ = false;
	dirtyIndices_.clear();
}
开发者ID:acquaman,项目名称:acquaman,代码行数:52,代码来源:AM3DAdditionAB.cpp

示例4: value

AMNumber AMNormalizationAB::value(const AMnDIndex &indexes) const
{
	if(indexes.rank() != rank())
		return AMNumber(AMNumber::DimensionError);

	if(!isValid())
		return AMNumber(AMNumber::InvalidError);

	for (int i = 0, size = indexes.rank(); i < size; i++)
		if((unsigned)indexes.at(i) >= (unsigned)axes_.at(i).size)
			return AMNumber(AMNumber::OutOfBoundsError);

	if (cacheUpdateRequired_)
		computeCachedValues();

	return cachedData_.at(indexes.flatIndexInArrayOfSize(size()));
}
开发者ID:acquaman,项目名称:acquaman,代码行数:17,代码来源:AMNormalizationAB.cpp

示例5: values

bool AMNormalizationAB::values(const AMnDIndex &indexStart, const AMnDIndex &indexEnd, double *outputValues) const
{
	if(indexStart.rank() != rank() || indexEnd.rank() != rank())
		return false;

	if(!isValid())
		return false;

	for (int i = 0, size = indexStart.rank(); i < size; i++)
		if((unsigned)indexStart.at(i) >= (unsigned)axes_.at(i).size || (unsigned)indexStart.at(i) > (unsigned)indexEnd.at(i))
			return false;

	if (cacheUpdateRequired_)
		computeCachedValues();

	int totalSize = indexStart.totalPointsTo(indexEnd);
	memcpy(outputValues, cachedData_.constData()+indexStart.flatIndexInArrayOfSize(size()), totalSize*sizeof(double));

	return true;
}
开发者ID:acquaman,项目名称:acquaman,代码行数:20,代码来源:AMNormalizationAB.cpp


注:本文中的AMnDIndex::flatIndexInArrayOfSize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。