Мне нужно это на моем уроке биологии ... с использованием MATLAB! - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь контролировать среднюю температуру в производстве каждый час, чтобы обеспечить контроль качества.Как я могу написать скрипт, который смотрит на температуру внутри растения как функцию времени и выводит время, когда температура опускается ниже 10 градусов по Цельсию и когда температура выше 80 градусов по Цельсию.Мой сценарий должен сказать, когда температура выходит за границы и какова температура.Я хочу использовать следующие данные:

Temperature = [-15 -5  5  15  24  33  42  51  59  66  73  79  85  90  78]

Первое измерение сделано в 5 утра, последнее измерение сделано в 7 вечера.Я хочу отображать время в 24-часовой системе вместо 12-часовой.

Ответы [ 2 ]

1 голос
/ 31 июля 2011

Похоже, вам нужно перебрать элементы вектора Температуры и найти, какие из них ниже 10 градусов или выше 80 градусов.В традиционном языке программирования вы бы использовали цикл FOR для прохождения элементов массива или вектора, но обычно в MATLAB вы хотите избегать циклов FOR, если вы можете и вместо этого использовать векторизацию MATLAB, потому что она намного быстрее.

Возможно, вы захотите взглянуть на функцию НАЙТИ (для получения дополнительной информации введите «help find» в консоли).Но, например, если бы у меня был вектор:

A = [0 1 2 1 2 1 1 0];

И использовал

find(A==0)

На выходе был бы вектор индексов A, где элемент равен 0:

[1 8]

Я мог бы так же сделать:

find(A==1 & A==0)

И я бы получил

[1 2 4 6 7 8]

Это полезно, потому что, хотя традиционно вы получаете доступ к элементам вектора синдекс, вы можете получить доступ к элементам вектора в MATLAB с другим вектором.Например:

>> A = [-10 4 -2 3];
>> ind = [2 3];
>> A(ind)

ans =

     4    -2

MATLAB также немного упрощает синтаксис, потому что вы можете использовать следующий ярлык вместо явного использования функции FIND:

>> A = [-10 4 -2 3];
>> A( A<-5 | A>3)

ans =

   -10     4

Что будет таким жекак при использовании функции НАЙТИ:

>> A(find(A<-5 | A>3))

ans =

   -10     4

Надеюсь, это поможет.Простите за длинный пост.Требуется некоторое время, чтобы привыкнуть к векторизованному способу написания кода MATLAB, но как только вы к нему привыкнете, вы обнаружите, что он очень полезен для вычислений.

0 голосов
/ 19 октября 2010

Вы можете создать вектор времени, подобный этому:

time = 5:1:19;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...