rainflow

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

Описание

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

пример

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

пример

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

пример

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

пример

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

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

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

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)

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

[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')

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

rainflow(Y,fs)

Сгенерируйте сигнал, который напоминает историю загрузки, состоя из известного соединения полупериодов синусоиды, неравномерно распределенные реверсирования. Сигнал производится на уровне 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)

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

[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)

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

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

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

Отобразите реверсирования и rainflow матрицу сигнала.

rainflow(TT)

Сгенерируйте набор экстремального значения, напоминающего реверсирования загрузки. Отобразите данные на графике.

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

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

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

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

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

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

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

rainflow(X,'ext')

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

свернуть все

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

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

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

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

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

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

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

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

Если расписание имеет пропавших без вести или дублирующиеся моменты времени, можно зафиксировать его с помощью советов в Чистом Расписании с Пропавшими без вести, Копией, или Неоднородные Времена (MATLAB).

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

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

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

свернуть все

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

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

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

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

Алгоритмы

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

Первоначально, 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 ДаA, B 3До н.э4НетДа
  1. Считайте AB как ½ цикла.

  2. Отбросьте A.

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

2BB, CНетРид Д.
3BB, C, DДаДо н.э4CD8НетДа
  1. Считайте BC как ½ цикла.

  2. Отбросьте B.

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

4CCDНетРид Э.
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. Считайте CD как ½ цикла.

  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ДаJM5M, n 1ДаРид П.
17DD, G, H, J, M, N, PДаM, n 1NP4НетНет
  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), "Общепринятая практика для Цикла, рассчитывающего в Анализе Усталости". Уэст-Коншохокен, PA: ASTM International, 2011, https://www.astm.org/cgi-bin/resolver.cgi? E1049.

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

Смотрите также

| |

Введенный в R2017b