Index exceeds the number of array elements (3).
Afficher commentaires plus anciens
%Gives an error message Index exceeds the number of array elements (3) in l(i,j) = m4(j)-h(i,j);
%Вектор возможных решений
D=['т','п','к'];
S=['жаркое','теплое','холодное'];
%Вектор вероятностей погодных условий
p=[0.6,0.3,0.1];
m=length(D);
n=length(S);
%Функция полезности
h=[2 1 0.5 ; 1.5 1.2 0.8 ; 1 1.2 1.5];
%Критерий максимума ожидаемых сожалений
%матрица максимальных элементов по столбцам
m4=max(h,[],1);
%Формирование матрицы сожалений
l=zeros(m,n);
for i=1:m
for j=1:n
l(i,j) = m4(j)-h(i,j);
end
end
a4=zeros(m,1);
%Заполнение вектора а4 математическими ожиданиями
for i=1:m
a4(i,1)=sum(p.*l(i,:));
end
%Поиск номера строки этой матрицы(вектора), элемент которой минимальный
d4=find(a4==min(a4(:,1)));
%Формирование вектора строк для вывода на экран
Y4=['По критерию минимума ожидаемых сожалений рекомендуется сажать ', num2str(D(d4)),...
'.При этом значение функции сожалений составит ', num2str(min(a4(:,1))),...
'руб.То есть в наихудшем случае убытки не превысят ',num2str(min(a4(:,1))),'руб.']
disp(Y4)
Réponses (1)
The problem is caused because
D=['т','п','к'];
S=['жаркое','теплое','холодное'];
is horizontal concatenation of character arrays, so m=3 and n=20. You can solve this by using cell arrays of character arrays (or you could use arrays of double-quoted strings). Lastly, doing num2str(D(d4)) doesn't make much sense, since it's already a string. It could probably use some formatting tweaks, but I don't know what it says.
%Вектор возможных решений
D={'т','п','к'};
S={'жаркое','теплое','холодное'};
%Вектор вероятностей погодных условий
p=[0.6,0.3,0.1];
m=length(D);
n=length(S);
%Функция полезности
h=[2 1 0.5 ; 1.5 1.2 0.8 ; 1 1.2 1.5];
%Критерий максимума ожидаемых сожалений
%матрица максимальных элементов по столбцам
m4=max(h,[],1);
%Формирование матрицы сожалений
l=zeros(m,n);
for i=1:m
for j=1:n
l(i,j) = m4(j)-h(i,j);
end
end
a4=zeros(m,1);
%Заполнение вектора а4 математическими ожиданиями
for i=1:m
a4(i,1)=sum(p.*l(i,:));
end
%Поиск номера строки этой матрицы(вектора), элемент которой минимальный
d4=find(a4==min(a4(:,1)));
%Формирование вектора строк для вывода на экран
Y4=['По критерию минимума ожидаемых сожалений рекомендуется сажать ', D{d4},...
'.При этом значение функции сожалений составит ', num2str(min(a4(:,1))),...
'руб.То есть в наихудшем случае убытки не превысят ',num2str(min(a4(:,1))),'руб.']
disp(Y4)
1 commentaire
Mary Koldasheva
le 1 Mai 2021
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!