从数据

时间:2017-07-10 08:51:07

标签: matlab

我有矩阵形式的数据,其中每列代表一个测量。

每列可以代表布尔值,整数或连续数字。

  • 布尔值:10
  • 整数:-3, -2, -1, 0, 1, 2, 3
  • 连续数字0.2, 5.0, 9.5, ...

矩阵很大所以我希望在Matlab中自动识别每个列的类型

示例矩阵:

1 0.2 3 . . .
0 4.5 2 . . .
1 6.0 1 . . .
1 7.0 2 . . .
0 9.5 3 . . .
0 8.0 2 . . .
  • 第1栏:开关1/0
  • 第2列:测量的连续值
  • 第3栏:某事的数量
  • 等...

我想识别每种类型,以便我可以适当地改变值,以了解被测系统的行为。例如:

if boolean
    value = ~value;      % Change switch/Boolean values to their opposite
end
if integer
    value = value + 1    % Increase integer values by 1
end
if continuous
    value = value + 0.1; % Increase continuous values by 0.1
end

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法定义列的类型:

isBool = all((data - ~(~(data))) == 0)
isInteger = all((data - round(data)) == 0) & ~isBool
isNumber = ~isBool & ~isInteger

这使用了每种类型的以下特征

  • 布尔值:否定布尔值两次导致相同的布尔值
  • 整数:舍入整数应该产生相同的整数(但跳过布尔值)
  • 浮点数:不是布尔值,也不是整数

未来的读者:看看@Wolfie的评论。