Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 5
1

MATLAB r2019b Проверьте код на правильность, пожалуйста

17.02.2020, 21:51. Показов 2338. Ответов 6

Author24 — интернет-сервис помощи студентам
У меня вопрос, как в MATLAB сделать так, чтобы программа считывала значения по определенному критерию, в данной задаче по n - количество опытов, если будут представлены несколько критериев расчета для разных n?
и второй вопрос? Подскажите, пожалуйста, как правильно вывести график с погрешностями? чтобы явно выделяющиеся значения можно было увидеть на графике ? и после расчета ( например после критерия Романовича) тоже построить график, только уже без погрешностей?
Спасибо)
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
clear; close all; clc;
%для n < 10...20
N=[1.007,3.008,4.008,5.010,60.002,7.006,8.009,57.007,9.009,1.008]; 
n=length(N);
p=mean(N);%среднее значение
S=std(N);%СКО
maximum=max(N);
k=sum(N);
f=k/n;%среднее значение
d=N(1:length(N));
b=(abs(maximum-p))/S; %Проверка по критерию Романовского
%Критерий Романовского
if n<20  
else
b=(abs(maximum-p))/S;
if b >= 2.41 %b сравнивается со значением Значения критерия Романовского т = f(n), при q=0,05 и n=10
else
  N(N==maximum)= [];   
  disp(N) 
  maximum=max(N);
if b >= 2.41
else 
    N(N==maximum)= [];
    disp(N)
    maximum=max(N);
   if b<= 2.41
   else
       disp(N)
   end 
end 
end
end 
i=(abs(maximum-p))>=2*S;%Критерий по Шовине
%Критерий Шовине
if n<10
else i=(abs(maximum-p))>=2*S;%сравнение происходит от количества измерений при n=3 i>=1,6*S;
    %n=6 i>=1,7*S;n=8 i>=1,9*S;n=10 i>=2,0*S;
    if i>=2*S
        else
  N(N==maximum)= [];   
  disp(N); 
  maximum=max(N);
  if i>=2*S
        else
  N(N==maximum)= [];   
  disp(N); 
  maximum=max(N);
  if i<=2*S
  else   
  disp(N);
  end
  end
    end
end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2020, 21:51
Ответы с готовыми решениями:

Проверьте пожалуйста код на правильность !
2. Даны два вектора и найти угол между ними и модуль векторного произведения векторов X и Y. При...

Проверьте пожалуйста код на правильность ! ! !
2. Дан массив размера 5 x 6 с элементами целого типа. Написать программу для вычисления числа...

Пожалуйста, проверьте правильность
Вобщем вот просая задача скрин: мой вариант программы #include &lt;iostream.h&gt; #include...

Проверьте правильность пожалуйста
Правильно ли я реализовал задание? Задание: В массиве Z(m) найти число чередований знака, то есть...

6
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
18.02.2020, 11:50 2
Лучший ответ Сообщение было отмечено Student2020 как решение

Решение

Критерий Романовского
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
clear; close all; clc;
%для n < 10...20
N=[1.007, 3.008, 4.008, 5.010, 60.002, 7.006, 8.009, 57.007, 9.009, 1.008];
Nd = N;
Nd(Nd==max(Nd)) = nan;
p=nanmean(Nd);%среднее значение без учета максимального члена
S=nanstd(Nd);%СКО без учета максимального члена
maximum=max(N);
b=(abs(maximum-p))/S; %Проверка по критерию Романовского
%Критерий Романовского
if length(N) < 20
    b_cr = 2.78;
    while b >= b_cr
        Nd(Nd==maximum)= nan;
        disp(Nd)
        n = length(Nd(~isnan(Nd)));
        if n <= 4
            b_cr = 1.71;
        elseif n <= 6 && n > 4
            b_cr = 2.10;
        elseif n <= 8 && n > 6
            b_cr = 2.27;
        elseif n <= 10 && n > 8
            b_cr = 2.41;
        elseif n <= 12 && n > 10
            b_cr = 2.52;
        elseif n <= 15 && n > 12
            b_cr = 2.64;
        end
        p=nanmean(Nd);%среднее значение
        S=nanstd(Nd);%СКО
        maximum=max(Nd);
        b = abs((p-maximum)/S);%критерий Романовского
    end
end
c = find(isnan(Nd));
plot(Nd,'go')
hold on; grid on
plot(c,N(isnan(Nd)),'rx')


Критерий по Шовине
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
clear; close all; clc;
N=[1.007, 3.008, 4.008, 5.010, 60.002, 7.006, 8.009, 57.007, 9.009, 1.008];
Nd = N;
Nd(Nd==max(Nd)) = nan;
p=nanmean(Nd);%среднее значение без учета максимального члена
S=nanstd(Nd);%СКО без учета максимального члена
maximum=max(N);
if length(N)<=10
    k=2;
    i = abs(maximum-p);%сравнение происходит от количества измерений при n=3 i>=1,6*S;
    %n=6 i>=1,7*S;n=8 i>=1,9*S;n=10 i>=2,0*S;
    n = length(Nd(~isnan(Nd)));
    if n <= 3
        k = 1.6;
    elseif n <= 6 && n > 3
        k = 1.7;
    elseif n <= 8 && n > 6
        k = 1.9;
    end
    while i >= k*S
        Nd(Nd==maximum)= nan;
        disp(Nd);
        maximum=max(Nd);
        i = abs(maximum-p);
    end
end
c = find(isnan(Nd));
plot(Nd,'go')
hold on; grid on
plot(c,N(isnan(Nd)),'rx')
1
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 5
18.02.2020, 12:44  [ТС] 3
Спасибо)
А вот модно это сделать так,чтобы было в одной программе ? Такое возможно?
Тобы мы завали массив N, программа счиатеаи сколько в массиве значений и дальше считает по одному из критериев ? Такое возможно ?)
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
18.02.2020, 12:45 4
Student2020, а как выбирать критерий?
0
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 5
18.02.2020, 12:50  [ТС] 5
Сергей Тетьора, там все зависит от количества значент в массиве. Например в данном коде Шовине применяется,когда n<10,а Романовский,когда n<20
В дальнейшем в данный код добавятся критерия,когда n>20,n>30 и n>100
Самый главный критерий это количество значений)
0
117 / 83 / 39
Регистрация: 06.01.2013
Сообщений: 274
18.02.2020, 16:13 6
Лучший ответ Сообщение было отмечено Student2020 как решение

Решение

Student2020,
Пробуйте
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
clear; close all; clc;
%для n < 10...20
N=[1.007, 3.008, 4.008, 5.010, 60.002, 7.006, 8.009, 57.007, 9.009, 1.008];
%Критерий Романовского
if length(N) < 20 && length(N) > 10
    Nd = N;
    Nd(Nd==max(Nd)) = nan;
    p=nanmean(Nd);%среднее значение без учета максимального члена
    S=nanstd(Nd);%СКО без учета максимального члена
    maximum=max(N);
    b=(abs(maximum-p))/S; %Проверка по критерию Романовского
    b_cr = 2.78;
    while b >= b_cr
        Nd(Nd==maximum)= nan;
        disp(Nd)
%         n = length(Nd(~isnan(Nd)));
%         if n <= 4
%             b_cr = 1.71;
%         elseif n <= 6 && n > 4
%             b_cr = 2.10;
%         elseif n <= 8 && n > 6
%             b_cr = 2.27;
%         elseif n <= 10 && n > 8
%             b_cr = 2.41;
%         elseif n <= 12 && n > 10
%             b_cr = 2.52;
%         elseif n <= 15 && n > 12
%             b_cr = 2.64;
%         end
        p=nanmean(Nd);%среднее значение
        S=nanstd(Nd);%СКО
        maximum=max(Nd);
        b = abs((p-maximum)/S);%критерий Романовского
    end
elseif length(N) <= 10
%  Критерий по Шовине
    Nd = N;
    Nd(Nd==max(Nd)) = nan;
    p=nanmean(Nd);%среднее значение без учета максимального члена
    S=nanstd(Nd);%СКО без учета максимального члена
    maximum=max(N);
    n = length(Nd(~isnan(Nd)));
    i = abs(maximum-p);%сравнение происходит от количества измерений при n=3 i>=1,6*S;
    %n=6 i>=1,7*S;n=8 i>=1,9*S;n=10 i>=2,0*S;
    k=2;
    if n <= 3
        k = 1.6;
    elseif n <= 6 && n > 3
        k = 1.7;
    elseif n <= 8 && n > 6
        k = 1.9;
    end
    while i >= k*S
        Nd(Nd==maximum)= nan;
        disp(Nd);
        maximum=max(Nd);
        i = abs(maximum-p);
    end
end
c = find(isnan(Nd));
plot(Nd,'go')
hold on; grid on
plot(c,N(isnan(Nd)),'rx')
1
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 5
19.02.2020, 06:57  [ТС] 7
Сергей Тетьора, ,спасибо Вам большое ))
0
19.02.2020, 06:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2020, 06:57
Помогаю со студенческими работами здесь

Пожалуйста, проверьте правильность программы
Всем здравствуйте, для решения задачи, я написала программу на языке Си, однако в Visual Studio у...

Проверьте правильность решения, пожалуйста
Только начал изучение, поэтому очень сомневаюсь в своем решении. Задача такая: в ящике 9...

Пожалуйста, проверьте правильность решение задачек
Всем добрый день. Вот порешал задачки, но не уверен в их правильности. Задача 1. В телефонном...

Проверьте, пожалуйста, правильность моего решения
Условие: 1) Построить на множестве M={a,b,c} бинарное отношение, являющееся транзитивным и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru