Untitled

 avatar
unknown
plain_text
2 months ago
1.4 kB
3
Indexable
const data = msg.payload; // Parsed CSV data (array of rows)
const amplitudes = data.map(row => parseFloat(row.col1)); // Replace 'col1' with the column containing displacement data

// Calculate Maximum and Minimum Amplitude
const maxAmplitude = Math.max(...amplitudes);
const minAmplitude = Math.min(...amplitudes);

// Calculate Mean
const mean = amplitudes.reduce((sum, val) => sum + val, 0) / amplitudes.length;

// Calculate Standard Deviation
const stdDev = Math.sqrt(amplitudes.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / amplitudes.length);

// Calculate Logarithmic Decrement
const logDecrements = [];
for (let i = 1; i < amplitudes.length; i++) {
    if (amplitudes[i - 1] > amplitudes[i]) {
        const delta = Math.log(amplitudes[i - 1] / amplitudes[i]);
        logDecrements.push(delta);
    }
}
const avgLogDecrement = logDecrements.reduce((sum, val) => sum + val, 0) / logDecrements.length;

// Calculate Damping Ratio
const zeta = avgLogDecrement / Math.sqrt(4 * Math.PI ** 2 + avgLogDecrement ** 2);

// Calculate Damping Constant (Assume values for mass (m) and stiffness (k))
const mass = 1; // Example value (kg)
const stiffness = 100; // Example value (N/m)
const dampingConstant = 2 * zeta * Math.sqrt(stiffness * mass);

// Output the results
msg.payload = {
    maxAmplitude,
    minAmplitude,
    stdDev,
    avgLogDecrement,
    zeta,
    dampingConstant,
    amplitudes,
    logDecrements
};
return msg;
Editor is loading...
Leave a Comment