如何在 Scilab 中根据另一列中的最大值或最小值显示一列的数量?

问题描述 投票:0回答:1

我的问题与整个程序不熟悉有关。已尝试以最大值和最小值显示时间值,但我不确定如何解决该问题。我已成功显示最大值和最小值,但无法将另一列中的值链接到这些数量。

问题如下: "a. 读取数据文件(使用 fscanfMat('SENSOR.txt') 命令)并打印数字 传感器的数量以及文件中包含的数据的秒数。请记住,第 1 栏 不包含传感器数据;它包含时间数据。 (提示:使用尺寸功能。) b.查找每个传感器上记录的最大值和最小值。 确定它们发生的时间。 c.查找每个传感器以及收集的所有数据值的平均值和标准偏差。”

SENSOR.txt 是: 0.70.6432 68.347 72.3469 67.6751 73.1764

  1. 73.2823 65.7819 65.4822 71.8548 66.9929
  2. 64.1609 72.4888 70.1794 73.6414 72.7559
  3. 67.697 77.4425 66.8623 80.5608 64.5008
  4. 68.6878 67.2676 72.677 63.2135 70.43
  5. 63.9342 65.7662 72.644 64.8869 59.9772
  6. 63.4028 68.7683 68.9815 75.1892 67.5346
  7. 74.6561 73.3151 59.7284 68.051 72.3102
  8. 70.0562 65.729 70.6628 63.0937 68.395
  9. 66.7743 63.9934 77.9647 71.5777 76.1828
  10. 74.0286 69.4007 75.0921 77.7662 66.8436
  11. 71.1581 69.6735 62.098 73.5395 58.3739
  12. 65.0512 72.4265 69.6067 79.7869 63.8418
  13. 76.6979 67.0225 66.5917 72.5227 75.2782
  14. 71.4475 69.2517 64.8772 79.3226 69.4339
  15. 77.3946 67.8262 63.8282 68.3009 71.8961
  16. 75.6901 69.6033 71.444 64.3011 74.721
  17. 66.5793 77.6758 67.8535 68.9444 59.3979
  18. 63.5403 66.9676 70.279 75.9512 66.7766
  19. 69.6354 63.2632 68.1606 64.419 66.4785

(b) 部分我遇到的问题是编写代码,既可以找到每列中的最大值和最小值(我已经完成),但也包括每个值所在的时间值(第 1 列)发生。然后将这些值放入矩阵中并显示。

我当前代码的示例如下,我将非常感谢您的帮助。谢谢!

当前代码

我尝试了两种不同的方法。第一个是将每一列显示为自己的变量,但这看起来很荒谬并且过于复杂。然后我厌倦了建立一个 [big,place(2:6)]=max(:,(2:6)) 来识别每个最大(或最小)值的位置,并将该值作为变量,然后基于脱离我之前定义的变量。我预计这会起作用,但我遇到了“子矩阵定义错误”的问题。

arrays variables matrix multiple-columns scilab
1个回答
0
投票

我建议您也查看 Scilab 帮助中的

find
函数,它为您提供(向量或矩阵的)“真实”索引,因此在向量 V 中最大值的索引(或相同的值)最大值重复!)是:

i = find( V == max( V ) );

向量

T
中对应的时间就是
t=T(i)
。当然,您可以使用完整原始数据矩阵的子矩阵索引:

i = find( M(:,2) == max( M(:,2) ) );
t = M(i,1);
© www.soinside.com 2019 - 2024. All rights reserved.