Это решит вашу непосредственную проблему:
Замените
lookup = {"A", "Freq(Hz)"; "B", "Pressure(bar)", "c", "time(ms)", ...};
на
lookup = {A, "Freq(Hz)"; B, "Pressure(bar)", c, "time(ms)", ...};
Массивы ячеек гетерогенные контейнеры, каждый элементможет быть массивом любого времени, независимо от всех других типов.
С этим изменением остальная часть вашего кода должна работать как задумано.Возможно, вы захотите добавить команду figure
или print
внутри цикла, так как каждый график будет перезаписывать предыдущий.figure
создает новое графическое окно для построения графика, у вас будет 50 окон (не очень хорошо).print
может сохранить график в файл, что может быть лучшим подходом здесь.Не пытайтесь объединить 50 строк данных в одном графике, это будет беспорядок!
В более широком масштабе, вы можете пересмотреть свою стратегию с помощью определения 50 различных переменных.Массивы ячеек и структурные массивы - действительно хорошие способы сделать это.Например, вы можете думать о
data.A = sin(Time);
data.B = cos(Time);
data.c = 2*sin(Time);
или
data(1).values = sin(Time);
data(1).name = "A";
data(1).units = "Freq(Hz)";
data(2).values = cos(Time);
data(2).name = "B";
data(2).units = "Pressure(bar)";
data(3).values = 2*sin(Time);
data(3).name = "c";
data(3).units = "time(ms)";
Обратите внимание, что в первом случае вы также можете индексировать с помощью data.("A")
, что приближает вас к вашемуоригинальная идея, за исключением того, что у вас нет 50 переменных в вашем рабочем пространстве, но есть одна единая структура данных, с которой легче иметь дело.
Вот очень подробный список причин, по которым eval
может быть плохо использовать .Эта ссылка также показывает некоторые альтернативы, аналогичные тому, что я обобщил выше.