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


TypeScript extension.IMeasureTask类代码示例

本文整理汇总了TypeScript中eez-studio-shared/extensions/extension.IMeasureTask的典型用法代码示例。如果您正苦于以下问题:TypeScript IMeasureTask类的具体用法?TypeScript IMeasureTask怎么用?TypeScript IMeasureTask使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


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

示例1: function

export default function(task: IMeasureTask) {
    let numSamples = Math.min(
        Math.pow(2, Math.floor(Math.log(task.xNumSamples) / Math.log(2))),
        1024 * 1024
    );

    var real = new Float64Array(numSamples);
    var imag = new Float64Array(numSamples).fill(0);

    for (let i = 0; i < numSamples; ++i) {
        real[i] = task.getSampleValueAtIndex(
            task.xStartIndex + Math.floor((i * task.xNumSamples) / numSamples)
        );
    }

    transform(real, imag);

    // Ignore 0 frequency part when trying to get frequency. Offset can be bigger than wave amplitude and cause issues.
    var maxMag = real[1] * real[1] + imag[1] * imag[1];
    var indexMax = 1;
    for (var i = 2; i < real.length / 2; i++) {
        var magnitude = real[i] * real[i] + imag[i] * imag[i];
        if (magnitude > maxMag) {
            maxMag = magnitude;
            indexMax = i;
        }
    }
    var step = task.samplingRate / task.xNumSamples;
    var frequency = indexMax * step;

    task.result = frequency;
    task.resultUnit = "frequency";
}
开发者ID:eez-open,项目名称:studio,代码行数:33,代码来源:frequency.ts

示例2: function

export default function(task: IMeasureTask) {
    let result = Number.MAX_VALUE;

    const xEndIndex = task.xStartIndex + task.xNumSamples;
    for (let i = task.xStartIndex; i < xEndIndex; ++i) {
        const y = task.getSampleValueAtIndex(i);
        if (y < result) {
            result = y;
        }
    }

    task.result = result;
}
开发者ID:eez-open,项目名称:studio,代码行数:13,代码来源:min.ts

示例3: function

export default function(task: IMeasureTask) {
    let sum = 0;

    const xEndIndex = task.xStartIndex + task.xNumSamples;
    for (let i = task.xStartIndex; i < xEndIndex; ++i) {
        const sample = task.getSampleValueAtIndex(i);
        if (!isNaN(sample)) {
            sum += sample;
        }
    }

    task.result = sum / task.xNumSamples;
}
开发者ID:eez-open,项目名称:studio,代码行数:13,代码来源:average.ts

示例4: function

export default function(task: IMeasureTask) {
    let min = Number.MAX_VALUE;
    let max = Number.MIN_VALUE;

    const xEndIndex = task.xStartIndex + task.xNumSamples;
    for (let i = task.xStartIndex; i < xEndIndex; ++i) {
        const y = task.getSampleValueAtIndex(i);
        if (y < min) {
            min = y;
        }
        if (y > max) {
            max = y;
        }
    }

    task.result = max - min;
}
开发者ID:eez-open,项目名称:studio,代码行数:17,代码来源:peak-to-peak.ts

示例5: function

export default function(task: IMeasureTask) {
    //
    let numSamples = Math.pow(2, Math.floor(Math.log2(task.xNumSamples)));

    let F = task.xNumSamples / numSamples;

    let halfNumSamples = Math.floor(numSamples / 2);

    //
    const real = new Float64Array(numSamples);

    real[0] = task.getSampleValueAtIndex(task.xStartIndex + 0);
    for (let i = 1; i < numSamples; ++i) {
        real[i] = task.getSampleValueAtIndex(task.xStartIndex + Math.round(i * F));
    }

    const imag = new Float64Array(numSamples).fill(0);

    //
    transform(real, imag);

    //
    const yAxisInDecibels =
        !task.parameters || !task.parameters.yAxis || task.parameters.yAxis !== "linear";

    function toDecibels(i: number) {
        const re = real[i];
        const im = imag[i];
        const pow_dB = 10 * Math.log10((re * re + im * im) / (numSamples * numSamples));
        return Math.max(pow_dB, -110);
    }

    function getLinearYValue(i: number) {
        const re = real[i];
        const im = imag[i];
        return Math.sqrt(re * re + im * im) / numSamples;
    }

    const getYValue = yAxisInDecibels ? toDecibels : getLinearYValue;

    const data = new Array(halfNumSamples);
    let minValue, maxValue;
    minValue = maxValue = data[0] = getYValue(0);
    for (let i = 1; i < halfNumSamples; ++i) {
        data[i] = getYValue(i);
        if (data[i] < minValue) {
            minValue = data[i];
        } else if (data[i] > maxValue) {
            maxValue = data[i];
        }
    }

    //
    task.result = {
        data,
        samplingRate: numSamples / (task.samplingRate / F),
        xAxes: {
            unit: "frequency",
            logarithmic:
                !task.parameters || !task.parameters.xAxis || task.parameters.xAxis !== "linear"
        },
        yAxes: {
            unit: yAxisInDecibels ? "decibel" : task.valueUnit,
            minValue,
            maxValue
        }
    };
}
开发者ID:eez-open,项目名称:studio,代码行数:68,代码来源:fft.ts


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