1 / 1 / 0
Регистрация: 04.06.2012
Сообщений: 13
|
||||||
1 | ||||||
Программа для расчета объемных весов22.06.2012, 17:21. Показов 2241. Ответов 10
Метки нет (Все метки)
Задача: из указанного элемента матрицы двигаться вверх по строчкам, пока не будет достигнуто значение не равное 0. Перемножить его с соответствующим элементом массива D(y), далее
перейти в столбец равному этой строке и опять двигать вверх по строчкам. Цикл заканчивается на элементе первой строки не равном 0. Весь смысл приложен в документе Word Изначальная иерархия классификации изделий.doc Массив B(y) содержит номера последних таксонов.
Выдает ошибку Attempted to access M(0,1); index must be a positive integer or logical. По идее должно быть движение вверх по матрице к значениям M(1,2), M(1,3), M(1,4) Как правильно это реализовать. Я уже думаю, что вообще неправильные циклы сделал.
0
|
22.06.2012, 17:21 | |
Ответы с готовыми решениями:
10
Программа для расчета ЗП Программа для расчета по заданным размерам для шара, призмы, цилиндра. Программа для расчета тока. Программа для расчета по 2-м формулам |
vetvet
|
22.06.2012, 19:00
#3
|
2
|
23.06.2012, 00:12 | 4 | |||||
Похоже на правду, только это кусочек кода, нет присвоения x и B, чему они равны?
Хм, а если сделать так:
vetvet, Вы оказывается девушка! Приятно, проникся симпатией. :shine:
2
|
1 / 1 / 0
Регистрация: 04.06.2012
Сообщений: 13
|
|
23.06.2012, 13:18 [ТС] | 5 |
Теперь ошибка: Improper assignment with rectangular empty matrix.
Error in ==> raznoobrazie2 at 100 D(y)=D(y)*M(i,j); x= количество цепочек. То есть количество посл. таксонов. B(y)= массив с номерами последних таксонов. M(i,j)- матрица, показывающая i- номер таксона, j- номера таксонов входящих непосредственно в таксон i Согласно методу объемный вес цепочки = произведение объемных весов, входящих в нее таксонов. Таксон- элемент классификации. В каждом столбце по одному числу больше 0. Так как таксон может принадлежать только одному вышестоящему, как указано на рис. иерархии.!
0
|
23.06.2012, 14:06 | 6 |
D(y) = D(y).*M(i,j); точку перед умножением забыли :)
Кстати, если будешь использовать i = find( M(:,j)~=0 ); попробуй выше написать i = B(y); j = B(y); не прибавляя 1. Если будет ругаться на нулевой индекс - вернешь ее. Также вручную просчитай результат, чтобы можно было проверить правильность работы программы. И доложи в сюда о результатах! :)
2
|
1 / 1 / 0
Регистрация: 04.06.2012
Сообщений: 13
|
||||||
23.06.2012, 14:23 [ТС] | 7 | |||||
Точка перед умножением не спасла!
Если j=B(y)+1 - то будет уже неправильный столбец, что влияет на правильность расчетов. Ошибка нулевого индекса после замены на i = find( M(:,j)~=0 ) уже не выходит. Теперь
0
|
1 / 1 / 0
Регистрация: 04.06.2012
Сообщений: 13
|
||||||
23.06.2012, 14:35 [ТС] | 9 | |||||
Это и так в тексте есть Действительно пояснять не нужно == Прилагаю текст программы:
0
|
23.06.2012, 16:13 | 10 |
Да, непросто разобраться в такой программе без матлаба через телефон.
Неплохо было бы поставить breakpoint напротив строки D(y) = D(y).*M(i,j); чтобы проконтролировать значения D, M, i, j, y и понять где там берется пустой элемент. Надеюсь народ подтянется. - И исправь i = B(y)+1; на i = B(y);
2
|
1 / 1 / 0
Регистрация: 04.06.2012
Сообщений: 13
|
||||||
24.06.2012, 14:15 [ТС] | 11 | |||||
За ночь придумал как все по другому сделать. Все работает.
1
|
24.06.2012, 14:15 | |
24.06.2012, 14:15 | |
Помогаю со студенческими работами здесь
11
Программа для расчета параметров Программа для расчета по формулам Программа для расчета радиостанций Программа для расчета MD5 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |