Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Ильнар 22
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 7
1

Построение статистических математических моделей. матлаб выдает ошибку

20.03.2016, 18:20. Просмотров 360. Ответов 6
Метки нет (Все метки)

Здравствуйте. Проблема такая, есть задача, которую уже решена на предыдущих версиях матлаба. На какой версии точно сказать не могу, так как было это 2 года назад. В то время все работало корректно. Теперь точно такую же задачу пытаюсь решить в матлабе 2012, на что он выводит мне ошибки. Может быть это из за разных версий матлаба? Смотрел схожие вопросы у вас на форуме, но ничего такого, что помогло решить проблему не нашел. Отличие в том что раньше массив вводился вручную, а сейчас хотел чтоб он загружался с документа. Остальное все тоже самое.
0
Вложения
Тип файла: doc программа.doc (89.5 Кб, 8 просмотров)
Тип файла: txt massiv.txt (7.7 Кб, 3 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2016, 18:20
Ответы с готовыми решениями:

Построение функций в МатЛаб
Помогите, пожалуйста! Учусь в университете, на первом курсе. По МатЛабу дали...

Построение неявной функции в матлаб
1) exp(theta/(1+betta*theta))-eps1*r*theta*(1+betta*theta)=0 пробовала...

Построение графика по трем переменным в матлаб
y=; x=; z=; = meshgrid(x,y,z); figure surf(X,Y,Z); это не правильно...

Открыть txt-файл при его формировании в матлаб и сохранении вне матлаб
С помощью операторов fopen, fprintf и fclose в файл "Press.txt" записана...

Выдает ошибку
Доброго времени суток.Помогите решить проблему, ошибку выдает.Заранее спасибо

6
Dmitriu_L
58 / 58 / 13
Регистрация: 01.03.2016
Сообщений: 142
20.03.2016, 20:33 2
Ильнар 22, все работает, просто при копировании из ворд файла нужно поправить некоторые знаки в коде и добавить загрузку файла с массивом.
Кликните здесь для просмотра всего текста

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
64
65
66
67
68
69
massiv=load('massiv.txt');% ввод массива
N=length(massiv);% вычисление длинны массива
masX(1:1:N/2)=massiv(1:2:N);%
q=mean(masX);% вычисление среднего арифметического
r=var(masX)^0.5; % вычисление дисперсии выборки
w=1.9679;% Значение критерия Стьюдента(250 измерений)
k=q+r*w;% Верхняя граница (формула 2.16 в методичке)
h=q-r*w;% Нижняя граница (формула 2.17 в методичке)
j=1;%
for i=(1:1:length(masX))%
if masX(i)>=h & masX(i)<=k%          Условие записи в новый массив
masB(j)=masX(i);
j=j+1;
end;
end;
masC=sort(masB); % построение вариационного ряда выборки
Z=length(masC)^0.5;% количество разрядов
z=ceil(Z);% округление до целых значений
minimal=min(masC);% вычислении минимального элемента
maxsimal=max(masC);% вычисление максимального элемента
R= maxsimal- minimal; % определение размаха выборки
m=R/z; %определение ширины разряда
masN(1)= minimal;
i=1;
j=1;
for  j=1:1:z;
masN(j+1)=masN(j)+m;
o=1;
p=1;
for p=1:1:(length(masC));
if (masC(p)<masN(j+1))&(masC(p)>masN(j));
masNew(o)=masC(p);
o=o+1;
end;
end;
M(j)=mean(masNew); %Вычисление среднего арифметического
D(j)=var(masNew); %Вычисление дисперсии 
J1(j)=length(masNew); % нахождение количества элементов в разряде
f(j)= length(masNew)/length(masC); %нахождение плотности распределения
if j==1
F(j)=f(j);
else F(j)=F(j-1)+f(j);
end;
clear masNew;
end;
stat_r=[M;D;J1;f;F];%Сбор в таблицу
subplot(4,1,1)% построение графика ( первый из четырех)
stairs(M,F)% вывод графика в виде ступенчатой функции
xlabel('x'),ylabel('F(x)')% присвоение координатным осям названия
title('functia raspredelenia')% заголовок первого графика
subplot(4,1,2)% построение графика ( второй из четырех)
plot(M,F)%построение графика
xlabel('x'),ylabel('f(x)')% присвоение координатным осям названия
title('plotnost  raspredelenia') % заголовок второго графика
for t=1:1:length(masB)
masV(t)=masB(t);
sred(t)=mean(masV);% вычисление средней арифмитической
d(t)=t;
end;
subplot(4,1,3)% построение графика ( третий из четырех)
plot(d,sred)% построение графика
xlabel('n'),ylabel('srednya') % присвоение координатным осям названия
for i=1:1:length(masB)
masW(i)=masB(i);
disp(i)=var(masW);% вычисление дисперсии
end;
subplot(4,1,4)% построение графика ( четвертый из четырех)
plot(d,disp) % построение графика
xlabel('n'),ylabel('disperia') % присвоение координатным осям названия
0
Ильнар 22
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 7
20.03.2016, 21:20  [ТС] 3
я пробовал сделать немного по другому. Не знаю только есть ли разница. Массив выбрал другой. Загружается с документа. после:
"if j==1
F1(j)=f(j);
else F1(j)=F1(j-1)+f(j);
end;"
выдает ошибку: Undefined function 'F1' for input arguments of type 'double'. Имена 1 варианта и 2 го отличаются
0
Вложения
Тип файла: docx Лабораторная работа.docx (35.7 Кб, 7 просмотров)
Тип файла: txt 2.txt (450 байт, 3 просмотров)
Dmitriu_L
58 / 58 / 13
Регистрация: 01.03.2016
Сообщений: 142
21.03.2016, 09:29 4
Ильнар 22, файл с лабораторной я проверил, код там рабочий. Перепечатанный код выкладывать не буду. Показывайте весь код, что вы написали по этой лабораторной работе и будем разбираться.

Добавлено через 1 минуту
Только оформите код правильно заключите его в ["MATLAB][/MATLAB"], кавычки убрать.
0
Ильнар 22
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 7
21.03.2016, 09:51  [ТС] 5
Dmitriu_L,
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
>> Q='C:\Users\1\Desktop\Магистратура\ЧМ лабораторные работы\№2\2.txt';
>> A=importdata(Q);
>> [m n] = size(A);
>> N=m*n;
>> xmin=min(A(1:end));
>> xmax =max(A(1:end));
>> R=xmax-xmin;
>> M=mean(A(1:end));
>> D=var(A(1:end));
>> S=D^0.5;
>> delta=1.98*S;
>> Xmax=M+S*1.98;
>> Xmin=M-S*1.98;
>> kol=N^0.5;
>> Kol=ceil(kol);
>> h=R/Kol;
>> variacia=sort(A(1:end));
>> for i=1:1:Kol;
j(1)=xmin;
j(i+1)=j(i)+h;
end;
>> for b=1:1:Kol;
xj(1)=(j(1)+j(2))/2;
xj(b)=(j(b+1)+j(b))/2;
end;
>> AA(1)=variacia(1);
>> j=1;
>> i=1;
>> for j=1:1:Kol
AA(j+1)=AA(j)+h;
g=1;
t=1;
for t=1:1:N;
if (variacia(t)<AA(j+1)&variacia(t)>AA(j))
masNew(g)=variacia(t)
g=g+1;
end;
end;
>> M1(j)=mean(masNew);
>> D1(j)=var(masNew);
>> j1(j)=length(masNew);
>> f1(j)=length(masNew)/length(variacia);
>> if j==1
F1(j)=f1(j);
else F1(j)=F1(j-1)+f1(j);
end;
Ошибка: Undefined function 'F1' for input arguments of type 'double'.
0
Dmitriu_L
58 / 58 / 13
Регистрация: 01.03.2016
Сообщений: 142
21.03.2016, 10:10 6
Ильнар 22, для начала сотрите везде >>. Этот знак от вывода в консоль. Надеюсь путь к файлу указан верно.
Вот в этом месте вы ищите разницу между значениями в векторе f1?
Matlab M
1
2
3
4
>> if j==1
F1(j)=f1(j);
else F1(j)=F1(j-1)+f1(j);
end;
Если да, то после else напечатали большую F1.
Matlab M
1
2
3
else F1(j)=F1(j-1)+f1(j);
% А нужно
else F1(j)=f1(j-1)+f1(j);

Вообще у матлаба для этого есть функция diff. Но на выходе матрица или вектор, будут на 1 элемент короче. Если же нужен первый элемент, который равен 0, то оставляйте этот кусок кода, в противном случаи используйте :
Matlab M
1
F1=diff(f1);


Вот поправленный вариант, только путь укажите до своего файла:
Кликните здесь для просмотра всего текста
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
Q='2.txt';
A=importdata(Q);
[m n] = size(A);
N=m*n;
xmin=min(A(1:end));
xmax =max(A(1:end));
 R=xmax-xmin;
 M=mean(A(1:end));
 D=var(A(1:end));
 S=D^0.5;
 delta=1.98*S;
 Xmax=M+S*1.98;
 Xmin=M-S*1.98;
 kol=N^0.5;
 Kol=ceil(kol);
 h=R/Kol;
 variacia=sort(A(1:end));
 for i=1:1:Kol;
j(1)=xmin;
j(i+1)=j(i)+h;
end;
 for b=1:1:Kol;
xj(1)=(j(1)+j(2))/2;
xj(b)=(j(b+1)+j(b))/2;
end;
 AA(1)=variacia(1);
 j=1;
 i=1;
 for j=1:1:Kol
AA(j+1)=AA(j)+h;
g=1;
t=1;
 end
for t=1:1:N;
if (variacia(t)<AA(j+1)&variacia(t)>AA(j))
masNew(g)=variacia(t)
g=g+1;
end;
end;
 M1(j)=mean(masNew);
 D1(j)=var(masNew);
 j1(j)=length(masNew);
 f1(j)=length(masNew)/length(variacia);
if j==1
F(j)=f1(j);
else
    F(j)=f1(j-1)+f1(j);
end
0
Ильнар 22
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 7
26.03.2016, 01:06  [ТС] 7
Dmitriu_L, Спасибо за ваш ответ. Разобрался.
0
26.03.2016, 01:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2016, 01:06

Программа выдает ошибку
k=-0.8; x=(-7:0.005:-5); t=length(x) t = 401 for i=1:t if x(i)&lt;k

Функция выдает ошибку !!!
function lol=tm(a) t1=cputime; N=length(a); for i=2:N for j=N:-1:i if...

Trid выдает ошибку
Доброго времени суток! Реализую метод Кранка-Николсона для решения краевой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru