Здравствуйте, моя модель вообще про мобильную зарядную станцию ​​где робот забирает аккумулятор с зарядной станции и гонит на нем конкретный автомобиль, заряжает машину и возвращает аккумулятор на станцию

Моя модель потока состояний имеет входной вектор с именем batLevel (несущий состояние заряда четырех разных батарей), полученный из Simulink с помощью блока «сцепление векторов». Я добавил графическую функцию цикла for (pickBat, которая имеет вход как batLevel), чтобы проверить значения вектора batLevel. Если batLevel(i) == 100, то батарею i следует отключить от зарядной станции, установив charge(i) = 0 (зарядка — это выходная переменная, которая указывает, заряжается ли батарея (-1), простаивает (0) или разряжается. (1)) и подобрать, установив bat(i) = 1 (bat — это переменная данных, которая указывает, взял ли робот летучую мышь (i) или нет). Charge и bat являются векторами 1xm, такими как batLevel. Я вызвал свою графическую функцию перед тем, как аккумулятор нужно забрать с зарядной станции, а для других переходов я использовал batLevel(i), bat(i) и charge(i) для ссылки на активный аккумулятор. К сожалению, я получаю сообщение об ошибке «Нижние индексы должны быть либо реальными положительными целыми числами, либо логическими». а batLevel(i) окрашен в красный цвет.

1) Я хотел бы знать, является ли использование цикла for хорошим вариантом

2) если да, то почему у меня эта ошибка и как ее решить

Прикреплено изображение реализации цикла for и подсостояния, в котором он вызывается.

Заранее спасибо за ваш ответ, и если потребуются дополнительные разъяснения, я не буду возражать против добавления некоторых материалов.

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

похоже, ваша основная проблема связана с функцией, которую вы сделали. Попробуйте включить эти решения:

  • Созданная вами функция pickBat не имеет выходных аргументов, поэтому ничего не возвращает. Убедитесь, что pickBat что-то выводит (например, [out1, out2,…,outn] = pickBat(arg1, arg2,…,argn)). Для этой функции вам нужно, чтобы pickBat выводил новые значения для заряда и летучей мыши. Когда вы вызываете функцию, также не забудьте включить выходные аргументы.
  • В настоящее время вы не перебираете index. Вы работаете только с первым индексом входного вектора, поэтому вектор никогда не выводится должным образом. Вам нужно включить цикл for, введя условие i ‹ length(charge) в функциональную схему, а затем вам нужно проверить, что каждый индекс равен 100. В коде Matlab подумайте об этом как об операторе if внутри для петли. Вы можете сделать это, комбинируя шаблоны, представленные в мастере шаблонов. Или вы всегда можете написать функцию в коде MATLAB с функцией MATLAB на диаграмме (не путать с используемой функцией!).

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ