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

Ошибка в программе Index exceeds matrix dimensions

02.12.2018, 14:12. Показов 9628. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача состоит в том, чтобы с помощью подпрограммы вычислить минимальный из элементов матрицы, лежащих ниже её главной диагонали. А потом найти значение выражение A(min)+B(min)-C(min). При этом все матрицы различны по количеству строк и столбцов. Но при запуске даёт вот такую ошибку:

Index exceeds matrix dimensions.

Error in X (line 6)
M=X(i,j);

Error in m36 (line 5)
[mB]=X(B);

Сам код: 1)Программа
Matlab M
1
2
3
4
5
6
7
A = [1,1,1,1,1; 2,2,2,2,2; 5,3,3,3,3; 4,4,4,4,4; 5,5,5,5,5;]
B = [3,3,3,3,3; 4,4,4,4,4; 5,5,5,5,5; 6,6,6,6,6;]
C = [1,1,1,1,1; 4,4,4,4,4; 5,5,5,5,5;]
[mA]=X(A);
[mB]=X(B);
[mC]=X(C);
k=mA+mB-mC
2)Подпрограмма
Matlab M
1
2
3
4
5
6
7
8
9
10
11
function[M]=X(X)
[n,n]=size(X);
N=X(2,1);
for i=2:n
    for j=1:(i-1)
      M=X(i,j);
        if N>M
        N=M
        end
    end
end
Непонятно почему индексы превышают размер матриц. Помогите, пожалуйста)

Добавлено через 3 минуты
Я нашёл ошибку тут же) В этом
Matlab M
1
for i=1:n
а надо
Matlab M
1
for i=2:n
Добавлено через 4 минуты
Программа заработала, но неправильно, при тех значениях матрицы, которые даны выше k=6, но по факту 2+4-4=2. Почему так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2018, 14:12
Ответы с готовыми решениями:

Ошибка Index exceeds matrix dimensions
Здравствуйте! Разбиваю изображение по каналам RGB. Возникает такая ошибка "Index exceeds matrix...

Ошибка: Index exceeds matrix dimensions
% Концентрация ср препарата в теле моделируется формулой %...

Ошибка при обработке изображений: Index exceeds matrix dimensions
В универе для расчётнографической работы дали задание Так звучит задание: Предположим, что Вы...

Index exceeds matrix dimensions
Почему ошибка, понять не могу??? clear all; clc; fs = 51e6; % частота дискретизации fh =...

4
Модератор
1731 / 1581 / 528
Регистрация: 13.09.2015
Сообщений: 5,468
02.12.2018, 16:30 2
Цитата Сообщение от xandar815 Посмотреть сообщение
Matlab M
1
[n,n]=size(X)
Почему для количества строк и столбцов вы прописываете одно и то же имя переменной (n)?
Кроме того, при количестве строк больше количества столбцов индекс j будет выходить за размер матрицы.
0
0 / 0 / 0
Регистрация: 04.03.2016
Сообщений: 54
02.12.2018, 17:41  [ТС] 3
Я делал так, потому что задача состоит в том, чтобы найти минимальный элемент под главной диагональю, а при таком условии, по-моему всегда количество строк равняется кол-ву столбцов вне зависимости от того, квадратная матрица или прямоугольная. Я сейчас поменял, но всё равно выдаёт значение 6 вместо 2(
0
Эксперт по математике/физике
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
03.12.2018, 08:39 4
xandar815, в определении функции
function[M]=X(X)
вместо M поставьте N.
А также использовать в процедуре переменные с таким же именем как и функции крайне негативная практика ведущая к возникновению трудно находимых ошибок.
Это все равно, что после рождения близнецов назвать их одинаковыми именами.
0
Модератор
1731 / 1581 / 528
Регистрация: 13.09.2015
Сообщений: 5,468
03.12.2018, 11:56 5
xandar815, вот вам код m-функции
Matlab M
1
2
3
4
5
function M=mind(X)
U=repmat(Inf,size(X));
V=tril(X,-1)+triu(U);
M=min(V(:));
end
0
03.12.2018, 11:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2018, 11:56
Помогаю со студенческими работами здесь

Index exceeds matrix dimensions
Не могу понять в чем ошибка f1 = @(t, x, y, z)(x^2)*sin(y) - z; a = 0; x0 = 0; y0 = 1; z0 = 0;...

Matlab Index exceeds matrix dimensions
Помогите, пожалуйста, заполняю массив, а он ругается... N=256; del=0.5*10^(-9); n=1; v=;...

Метод Якоби (Index exceeds matrix dimensions)
Всем здравствуйте. Задали написать реализацию метода Якоби. Сделал, тестю. для матриц размера 3*3...

Ошибка "Index exceeds matrix dimensions."
Доброго времени суток. Столкнулась с такой ошибкой, хотя до этого момента делала всё то же самое,...


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

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