我正试着每小时监测一次工厂的平均温度,以确保质量控制。我如何编写一个脚本来查看工厂内部的温度作为时间的函数,并输出温度低于10摄氏度和高于80摄氏度时的时间。我的脚本应该说明温度何时超出边界,以及温度是多少。我想使用以下数据:
Temperature = [-15 -5 5 15 24 33 42 51 59 66 73 79 85 90 78]第一次测量是在早上5点,最后一次测量是在晚上7点。我想用24小时制而不是12小时制来显示时间。
发布于 2011-07-31 07:12:32
看起来你需要遍历温度向量的元素,找出哪些低于10度,哪些高于80度。在传统的编程语言中,您将使用FOR循环来遍历数组或向量的元素,但在MATLAB中,您通常希望尽可能避免FOR循环,而是利用MATLAB的矢量化,因为它要快得多。
您将需要查看FIND函数(在控制台中键入'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 -2MATLAB还简化了语法,因为您可以使用以下快捷方式,而不是显式使用FIND函数:
>> A = [-10 4 -2 3];
>> A( A<-5 | A>3)
ans =
-10 4这与使用FIND函数相同:
>> A(find(A<-5 | A>3))
ans =
-10 4我希望这能帮到你。很抱歉发了这么长的帖子。习惯MATLAB的矢量化代码编写方式需要一些时间,但是一旦你习惯了它,你就会发现它对计算非常有用。
发布于 2010-10-19 14:42:28
你可以像这样创建一个'time‘向量:
time = 5:1:19;https://stackoverflow.com/questions/3964486
复制相似问题