Термист Термомеханическое упрочнение арматурного проката технология, средства, разработка |
Главная | О сайте | Стандарты | Технология | Устройства |
Лаборатория | Библиотека | Глоссарий | Желтые страницы | Обратная связь |
Главная >> Лаборатория >> Использование контрольных карт Шухарта
Описание методики см. Особые точки карт Шухарта. Восемь тестов для анализа контрольных карт Шухарта или "Выход процесса из-под контроля".
function Test_Shewhart(M, V_Lin) % Тестирование контрольной карты Шухарта UCL=V_Lin(1); UCL_2_3=V_Lin(2); UCL_1_3=V_Lin(3); CL=V_Lin(4); LCL_1_3=V_Lin(5); LCL_2_3=V_Lin(6); LCL=V_Lin(7); N=length(M(1,:)); % Тест одной точки. Точка выходит за контрольные пределы for i=1:N if Test_01(M(2,i), LCL, UCL) plot(M(1,i), M(2,i), 'or', 'LineWidth', 5) end end % Тест "3". Две из трех последовательных точек находятся с одной стороны % от центральной линии в зоне A или дальше if N >= 3 for i=1:(N-2) M_t1=M(:,i:(i+2)); [Flag, V_Out]=Test_03(M_t1(2,:), LCL_2_3, UCL_2_3); if Flag M_t1=M_t1(:, V_Out==1); plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end % Тест "5". Четыре из пяти последовательных точек находятся с одной % стороны от центральной линии в зоне B или дальше if N >= 5 for i=1:(N-4) M_t1=M(:,i:(i+4)); [Flag, V_Out]=Test_05(M_t1(2,:), LCL_1_3, UCL_1_3); if Flag M_t1=M_t1(:, V_Out==1); plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end % Тест "6". Шесть последовательных точек расположены по возрастанию % или по убыванию if N >= 6 for i=1:(N-5) M_t1=M(:,i:(i+5)); if Test_06(M_t1(2,:)) plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end % Тест "8". Восемь последовательных точек находятся вне зоны C % с обеих сторон от центральной линии if N >= 8 for i=1:(N-7) M_t1=M(:,i:(i+7)); if Test_08(M_t1(2,:), LCL_1_3, UCL_1_3) plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end % Тест "9". Девять последовательных точек находятся с одной стороны % от центральной линии if N >= 9 for i=1:(N-8) M_t1=M(:,i:(i+8)); if Test_09(M_t1(2,:), CL) plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end % Тест "14". Есть 14 последовательных точек, чередующихся вверх-вниз if N >= 14 for i=1:(N-13) M_t1=M(:,i:(i+13)); if Test_14(M_t1(2,:)) plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end % Тест "15". Есть 15 последовательных точек в зоне C (по обе стороны % от центральной линии) if N >= 15 for i=1:(N-14) M_t1=M(:,i:(i+14)); if Test_15(M_t1(2,:), LCL_1_3, UCL_1_3) plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5) end end end
Тест одной точки: Точка выходит за контрольные пределы |
function Flag=Test_01(x, LCL, UCL) % Проверка последовательности при анализе контрольных карт Шухарта % Тест одной точки: Точка выходит за контрольные пределы % Входные данные: % x - анализируемое значение (скаляр) % LCL и UCL - соответственно нижняя и верхняя контрольные границы (скалярные величины) % Выходное значение: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % Проверка входных значений if ~all(size(x)==[1 1]) | ~all(size(LCL)==[1 1]) | ~all(size(UCL)==[1 1]) error('Ошибка в Test_01. x, LCL, UCL должны быть скалярными.') end if x < LCL | x > UCL Flag=1; else Flag=0; end
Тест “3”: Две из трех последовательных точек находятся с одной стороны от центральной линии в зоне A или дальше |
function [Flag, V_Out]=Test_03(V, LCL_2_3, UCL_2_3) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “3”: Две из трех последовательных точек находятся с одной стороны % от центральной линии в зоне A или дальше % Входные данные: % V - исходный вектор из 3 значений % LCL_2_3 - нижняя граница нижней зоны B (скаляр) % UCL_2_3 - верхняя граница верхней зоны B (скаляр) % Выходные значения: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % V_Out - вектор с порядковыми номерами точек не прошедших тестирование % Проверка входных значений if length(V)~=3 error('Ошибка в Test_03. В векторе V должно быть 3 значения') end if ~all(size(LCL_2_3)==[1 1]) | ~all(size(UCL_2_3)==[1 1]) error('Ошибка в Test_03. LCL_2_3 и UCL_2_3 должны быть скалярными.') end if sum(V <= LCL_2_3) >= 2 Flag=1; V_Out=(V <= LCL_2_3); elseif sum(V >= UCL_2_3) >= 2 Flag=1; V_Out=(V >= UCL_2_3); else Flag=0; V_Out=NaN; end
Тест “5”: Четыре из пяти последовательных точек находятся с одной стороны от центральной линии в зоне B или дальше |
function [Flag, V_Out]=Test_05(V, LCL_1_3, UCL_1_3) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “5”: Четыре из пяти последовательных точек находятся с одной стороны % от центральной линии в зоне B или дальше % Входные данные: % V - исходный вектор из 5 значений % LCL_1_3 - нижняя граница зоны C (скаляр) % UCL_1_3 - верхняя граница зоны C (скаляр) % Выходные значения: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % V_Out - вектор с порядковыми номерами точек не прошедших тестирование % Проверка входных значений if length(V)~=5 error('Ошибка в Test_05. В векторе V должно быть 5 значений') end if ~all(size(LCL_1_3)==[1 1]) | ~all(size(UCL_1_3)==[1 1]) error('Ошибка в Test_05. LCL_1_3 и UCL_1_3 должны быть скалярными.') end if sum(V <= LCL_1_3) >= 4 Flag=1; V_Out=(V <= LCL_1_3); elseif sum(V >= UCL_1_3) >= 4 Flag=1; V_Out=(V >= UCL_1_3); else Flag=0; V_Out=NaN; end
Тест “6”: Шесть последовательных точек расположены по возрастанию или по убыванию |
function Flag=Test_06(V) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “6”: Шесть последовательных точек расположены по возрастанию или по убыванию % Входные данные: % V - исходный вектор из 6 значений % Выходное значение: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % Проверка входных значений if length(V)~=6 error('Ошибка в Test_06. Должно быть 6 значений') end V1=diff(V); Flag = all(V1>=0) | all(V1<=0);
Тест “8”: Восемь последовательных точек находятся вне зоны C с обеих сторон от центральной линии |
function Flag=Test_08(V, LCL_1_3, UCL_1_3) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “8”: Восемь последовательных точек находятся вне зоны C % с обеих сторон от центральной линии % Входные данные: % V - исходный вектор из 8 значений % LCL_1_3 - нижняя граница зоны C (скаляр) % UCL_1_3 - верхняя граница зоны C (скаляр) % Выходное значение: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % Проверка входных значений if length(V)~=8 error('Ошибка в Test_08. В векторе V должно быть 8 значений') end if ~all(size(LCL_1_3)==[1 1]) | ~all(size(UCL_1_3)==[1 1]) error('Ошибка в Test_08. LCL_1_3 и UCL_1_3 должны быть скалярными.') end Flag = all((V <= LCL_1_3) + (V >= UCL_1_3));
Тест “9”: Девять последовательных точек находятся с одной стороны от центральной линии |
function Flag=Test_09(V, CL) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “9”: Девять последовательных точек находятся с одной стороны от центральной линии % Входные данные: % V - исходный вектор из 9 значений % CL - значение для центральной линии (скаляр) % Выходное значение: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % Проверка входных значений if length(V)~=9 error('Ошибка в Test_09. Должно быть 9 значений') end if ~all(size(CL) == [1 1]) error('Ошибка в Test_09. CL должно быть скаляром') end Flag = all(V >= CL) | all(V <= CL);
Тест “14”: Есть 14 последовательных точек, чередующихся вверх-вниз |
function Flag=Test_14(V) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “14”: Есть 14 последовательных точек, чередующихся вверх-вниз % Входные данные: % V - исходный вектор из 14 значений % Выходное значение: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % Проверка входных значений if length(V)~=14 error('Ошибка в Test_14. Должно быть 14 значений') end V1=diff(V); V2=V1([1 3 5 7 9 11 13]); V3=V1([2 4 6 8 10 12]); Flag = (all(V2 >= 0) & all(V3 <= 0)) | (all(V2 <= 0) & all(V3 >= 0));
Тест “15”: Есть 15 последовательных точек в зоне C (по обе стороны от центральной линии) |
function Flag=Test_15(V, LCL_1_3, UCL_1_3) % Проверка последовательности при анализе контрольных карт Шухарта % Тест “15”: Есть 15 последовательных точек в зоне C % (по обе стороны от центральной линии) % Входные данные: % V - исходный вектор из 15 значений % LCL_1_3 - нижняя граница зоны C (скаляр) % UCL_1_3 - верхняя граница зоны C (скаляр) % Выходное значение: % Flag = 1 если условие выполняется, и Flag = 0 если не выполняется % Проверка входных значений if length(V)~=15 error('Ошибка в Test_15. В векторе V должно быть 15 значений') end if ~all(size(LCL_1_3)==[1 1]) | ~all(size(UCL_1_3)==[1 1]) error('Ошибка в Test_15. LCL_1_3 и UCL_1_3 должны быть скалярными.') end Flag = all((V >= LCL_1_3) & (V <= UCL_1_3));
Материал подготовлен на основании ДСТУ ISO 8258-2001 Статистический контроль. Контрольные карты Шухарта.
Смотри также
Использование контрольных карт
Шухарта
Пример построения x-R карты Шухарта
Web-сайт “Термист” (termist.com)
Термомеханическое упрочнение арматурного проката
Отсутствие ссылки на использованный материал является нарушением заповеди "Не укради"
Редактор сайта: Гунькин И.А. (termist.com@gmail.com)