rainflow

Подсчет дождя для анализа усталости

Описание

c = rainflow(x) возвращает счетчики цикла для истории времени загрузки, x, согласно стандарту ASTM E 1049. Смотрите Алгоритмы для получения дополнительной информации.

пример

c = rainflow(x,fs) возвращает количество циклов для x дискретизация по скорости fs.

пример

c = rainflow(x,t) возвращает количество циклов для x дискретизация в значения времени, хранимые в t.

пример

c = rainflow(xt) возвращает количество циклов для временной истории, хранящейся в MATLAB® timetable xt.

пример

c = rainflow(___,'ext') задает историю времени как вектор идентифицированных обращений (peaks и овраги). 'ext' может использоваться с любым из предыдущих синтаксисов.

[c,rm,rmr,rmm] = rainflow(___) выводит радужную матрицу, rmи два вектора, rmr и rmm, содержащий интервал гистограммы ребер для строк и столбцов rm, соответственно.

[c,rm,rmr,rmm,idx] = rainflow(___) также возвращает линейные индексы обращений, идентифицированных во входе.

rainflow(___) без выходных аргументов графики загружают реверсы и гистограмму радужной матрицы на текущей фигуре.

Примеры

свернуть все

Сгенерируйте сигнал, который напоминает историю нагрузок, состоящую из синусоидальных полупериодов, соединяющих известные, равноудаленные реверсы. Дискретизация сигнала производится на частоте 512 Гц в течение 8 секунд. Постройте график экстремумов и сигнала.

fs = 512;

X = [-2 1 -3 5 -1 3 -4 4 -2];
lX = length(X)-1;

Y = -diff(X)/2.*cos(pi*(0:1/fs:1-1/fs)') + (X(1:lX)+X(2:lX+1))/2;
Y = [Y(:);X(end)];

plot(0:lX,X,'o',0:1/fs:lX,Y)

Figure contains an axes. The axes contains 2 objects of type line.

Вычислите счетчики цикла для данных. Отобразите матрицу отсчётов циклов.

[c,hist,edges,rmm,idx] = rainflow(Y,fs);

T = array2table(c,'VariableNames',{'Count','Range','Mean','Start','End'})
T=7×5 table
    Count    Range    Mean    Start    End
    _____    _____    ____    _____    ___

     0.5       3      -0.5      0       1 
     0.5       4        -1      1       2 
       1       4         1      4       5 
     0.5       8         1      2       3 
     0.5       9       0.5      3       6 
     0.5       8         0      6       7 
     0.5       6         1      7       8 

Отобразите гистограмму отсчета циклов как функцию от области значений напряжения.

histogram('BinEdges',edges','BinCounts',sum(hist,2))
xlabel('Stress Range')
ylabel('Cycle Counts')

Figure contains an axes. The axes contains an object of type histogram.

Использование rainflow без выходных аргументов для отображения гистограммы циклов как функции от среднего цикла и области значений цикла.

rainflow(Y,fs)

Figure contains 2 axes. Axes 1 with title Load Reversals contains an object of type line. Axes 2 with title Rainflow Matrix Histogram contains an object of type histogram2.

Сгенерируйте сигнал, который напоминает историю нагрузок, состоящую из синусоидальных полупериодов, соединяющих известные, неравномерно расположенные реверсы. Дискретизация сигнала производится на частоте 10 Гц в течение 15 секунд. Постройте график экстремумов и сигнала.

fs = 10;

X = [0 1 3 4 5 6 8 10 13 15];
Y = [-2 1 -3 5 -1 3 -4 4 -2 6];

Z = [];
for k = 1:length(Y)-1
    x = X(k+1)-X(k);
    z = -(Y(k+1)-Y(k))*cos(pi*(0:1/fs:x-1/fs)/x)+Y(k+1)+Y(k);
    Z = [Z z/2];
end
Z = [Z Y(end)];

t = linspace(X(1),X(end),length(Z));
plot(X,Y,'o',t,Z)

Figure contains an axes. The axes contains 2 objects of type line.

Вычислите счетчики цикла для данных. Отобразите матрицу отсчётов циклов.

[c,hist,edges,rmm,idx] = rainflow(Z,t);

TT = array2table(c,'VariableNames',{'Count','Range','Mean','Start','End'})
TT=7×5 table
    Count    Range    Mean    Start    End
    _____    _____    ____    _____    ___

     0.5       3      -0.5      0       1 
     0.5       4        -1      1       3 
       1       4         1      5       6 
     0.5       8         1      3       4 
       1       6         1     10      13 
     0.5       9       0.5      4       8 
     0.5      10         1      8      15 

Использование rainflow без выходных аргументов для отображения гистограммы циклов как функции от среднего цикла и области значений цикла.

rainflow(Z,t)

Figure contains 2 axes. Axes 1 with title Load Reversals contains an object of type line. Axes 2 with title Rainflow Matrix Histogram contains an object of type histogram2.

Сгенерируйте случайный сигнал, дискретизированный на частоте 100 Гц в течение 100 секунд. Сохраните сигнал и его информацию о времени в расписании.

fs = 100;
t = seconds(0:1/fs:100-1/fs)';

x = randn(size(t));
TT = timetable(t,x);

Отобразите развороты и радужную матрицу сигнала.

rainflow(TT)

Figure contains 2 axes. Axes 1 with title Load Reversals contains an object of type line. Axes 2 with title Rainflow Matrix Histogram contains an object of type histogram2.

Сгенерируйте набор экстремумов, напоминающих развороты нагрузки. Постройте график данных.

X = [-2 1 -3 5 -1 3 -4 4 -2]';

plot(X)
xlabel('Sample Index')  
ylabel('Stress')

Figure contains an axes. The axes contains an object of type line.

Вычислите счетчики цикла для данных. Укажите, что вход состоит из уже идентифицированных экстремумов.

[C,hist,edges] = rainflow(X,'ext');

Отобразите гистограмму отсчета циклов как функцию от области значений напряжения.

histogram('BinEdges',edges','BinCounts',sum(hist,2))
xlabel('Stress Range')  
ylabel('Cycle Counts')

Figure contains an axes. The axes contains an object of type histogram.

Использование rainflow без выходных аргументов для отображения гистограммы циклов как функции от среднего цикла и области значений цикла.

rainflow(X,'ext')

Figure contains 2 axes. Axes 1 with title Load Reversals contains an object of type line. Axes 2 with title Rainflow Matrix Histogram contains an object of type histogram2.

Входные параметры

свернуть все

Загрузка истории времени, заданной как вектор. x должно иметь конечные значения.

Типы данных: single | double

Частота дискретизации, заданная как положительный действительный скаляр.

Типы данных: single | double

Значения времени, заданные как вектор, a duration массив, или duration скаляр, представляющий временной интервал между выборками.

Пример: seconds(0:1/100:1) является duration массив, представляющий 1 секунду дискретизации при 100 Гц.

Типы данных: single | double | duration

Загрузка истории времени, заданная как расписание. xt должно содержать увеличивающуюся, конечную строку раз. Расписание должно содержать только один числовой вектор данных с конечными значениями нагрузки.

Если расписание имеет отсутствующие или повторяющиеся точки времени, можно исправить его с помощью советов в разделе «Чистое расписание с пропущенными, повторяющимися или неоднородными временами».

Пример: timetable(seconds(0:4)',rand(5,1)) задает случайную переменную, дискретизированную с частотой дискретизации 1 Гц в течение 4 секунд.

Типы данных: single | double

Выходные аргументы

свернуть все

Отсчет цикла, возвращенный как матрица. c содержит информацию цикла в его столбцах в этом порядке: счетчики, области значений, средние значения, начальные выборочные индексы и итоговые выборочные индексы. Смотрите Алгоритмы для примера. Если вы задаете частоту дискретизации, временной интервал или вектор значений времени, то последние два столбца c содержать начальное и окончательное время цикла. Если вы звоните rainflow с расписанием в качестве входных данных, затем последние два столбца выражают начальное и окончательное время цикла в секундах.

Радужная матрица. Строки rm соответствуют области значений циклов, и столбцы соответствуют среднему циклу.

Интервал гистограммы, возвращенная как векторы. rmr и rmm содержат границы интервала строк и столбцов rm, соответственно.

Линейные индексы обращений, возвращенные как вектор.

Алгоритмы

Анализ усталости изучает, как ущерб накапливается у объекта, подвергающегося циклическим изменениям напряжения. Количество циклов, необходимых для разрыва объекта, зависит от амплитуды цикла. Широкополосное входное возбуждение содержит циклы различной амплитуды, и наличие гистерезиса в объекте имеет эффект вложения одних циклов в другие, полностью или частично. Подсчет радужного потока оценивает количество циклов изменения нагрузки как функцию от амплитуды цикла.

Первоначально, rainflow превращает историю нагрузок в последовательность сторнирования. Разворот - это локальные минимумы и максимумы, где нагрузка изменяет знак. Функция отсчитывает циклы, принимая во внимание движущуюся контрольную точку последовательности, Z, и движущуюся трехточечную подмножество с этими характеристиками:

  1. Первая и вторая точки в совокупности называются Y.

  2. Вторая и третья точки в совокупности называются X.

  3. В обоих X и Y точки сортируются от более ранних до более поздних во времени, но не обязательно являются последовательными в обратной последовательности.

  4. Область значений X, обозначенный r (X), является абсолютным значением различия между амплитудой первой точки и амплитудой второй точки. Определение r (Y) аналогично.

rainflow алгоритм следующий:

В конце функция собирает различные циклы и полупериоды и сводит их области значений, их средства и точки, в которых они начинаются и заканчиваются. Эта информация может затем использоваться, чтобы создать гистограмму циклов.

Примите во внимание следующую последовательность обращения:

ШагZАннулированияТри сторнирования?Yr (Y)Xr (X)r (X) < r (Y)?Z в Y?Действия
1AA, B, CДаAB3До н.э4НетДа
  1. Отсчитывайте AB как ½ цикл.

  2. Сброс А.

  3. Установите значение Z в B.

2BB, CНетЧтение Д.
3BB, C, DДаДо н.э4CD8НетДа
  1. Отсчет BC как ½ цикла.

  2. Сбросьте Б.

  3. Установите Z в C.

4CC, DНетЧтение Е.
5CC, D, EДаCD8DE6ДаЧтение Ф.
6CC, D, E, FДаDE6EF4ДаЧтение Г.
7CC, D, E, F, GДаEF4FG7НетНет
  1. Отсчитайте EF как 1 цикл.

  2. Сбросьте E и F.

8CC, D, GДаCD8DG9НетДа
  1. Отсчитывайте компакт-диск как ½ цикл.

  2. Сбросьте C.

  3. Установите значение Z в D.

9DD, GНетЧтение Н.
10DD, G, HДаDG9GH8ДаПрочитайте Дж.
11DD, G, H, JДаGH8HJ7ДаЧитайте К.
12DD, G, H, J, KДаHJ7JK4ДаЧтение Л.
13DD, G, H, J, K, LДаJK4KL3ДаЧтение М.
14DD, G, H, J, K, L, MДаKL3LM5НетНет
  1. Отсчитайте KL как 1 цикл.

  2. Сбросьте K и L.

15DD, G, H, J, MДаHJ7JM5ДаПрочитайте Н.
16DD, G, H, J, M, NДаJM5MN1ДаЧтение П.
17DD, G, H, J, M, N, PДаMN1NP4НетНет
  1. Отсчитайте MN как 1 цикл.

  2. Сбросьте M и N.

18DD, G, H, J, PДаHJ7МИРОВОЙ СУДЬЯ9НетНет
  1. Отсчитайте HJ как 1 цикл.

  2. Сбросьте H и J.

19DD, G, PДаDG9GP10НетДа
  1. Отсчитывайте DG как ½ цикл.

  2. Сбросьте D.

  3. Установите значение Z равным G.

20GG, PЗа пределами данных

Отсчитывайте GP как ½ цикл.

Теперь соберите результаты.

Количество цикловОбласть значенийСреднийНачатьКонец
½3–0.5AB
½4–1BC
141EF
½81CD
13–0.5KL
112.5MN
170.5HJ
½90.5DG
½101GP

Сравните это с результатом выполнения rainflow на последовательности:

q = rainflow([-2 1 -3 5 -1 3 -4 4 -3 1 -2 3 2 6])
q =

    0.5000    3.0000   -0.5000    1.0000    2.0000
    0.5000    4.0000   -1.0000    2.0000    3.0000
    1.0000    4.0000    1.0000    5.0000    6.0000
    0.5000    8.0000    1.0000    3.0000    4.0000
    1.0000    3.0000   -0.5000   10.0000   11.0000
    1.0000    1.0000    2.5000   12.0000   13.0000
    1.0000    7.0000    0.5000    8.0000    9.0000
    0.5000    9.0000    0.5000    4.0000    7.0000
    0.5000   10.0000    1.0000    7.0000   14.0000

Ссылки

[1] ASTM E1049-85 (2017), «Стандартные практики для подсчета циклов при анализе усталости». Западный Консхохокен, Пенсильвания: ASTM International, 2011, https://www.astm.org/cgi-bin/resolver.cgi?E1049.

Расширенные возможности

.

См. также

| |

Введенный в R2017b