2016-03-05 208 views
-1

我已经使用matlab函数f = ksdensity(x)创建了一组密度值,其中x是一个nx1向量。现在这产生类的结果 '双重'如何在matlab中将一个类转换为另一个类

{Columns 1 through 12 

0.0001 0.0002 0.0003 0.0004 0.0006 0.0008 0.0012 0.0016 0.0022 0.0029 0.0038 0.0049 

列13至24

0.0062 0.0078 0.0095 0.0115 0.0136 0.0159 0.0183 0.0208 0.0233 0.0257 0.0281 0.0304 

列25至36

0.0327 0.0349 0.0370 0.0392 0.0414 0.0438 0.0463 0.0491 0.0521 0.0553 0.0586 0.0621 

列37至48

0.0656 0.0691 0.0723 0.0752 0.0776 0.0795 0.0808 0.0814 0.0814 0.0808 0.0796 0.0779 

第49至60列

0.0758 0.0733 0.0707 0.0680 0.0652 0.0624 0.0597 0.0571 0.0547 0.0523 0.0501 0.0479 

列61〜72

0.0459 0.0441 0.0423 0.0408 0.0393 0.0381 0.0370 0.0360 0.0352 0.0345 0.0338 0.0331 

列73〜84

0.0324 0.0315 0.0305 0.0293 0.0279 0.0263 0.0244 0.0224 0.0203 0.0181 0.0158 0.0137 

列85至96

0.0116 0.0097 0.0079 0.0064 0.0051 0.0040 0.0030 0.0023 0.0017 0.0012 0.0009 0.0006 

列97到100

0.0004 0.0003 0.0002 0.0001} 

但为了进一步使用这些数据,我需要将其转换为数组。我怎么做?

+0

数组不是*类*。它是每个都有一个类的对象列表。在你的情况下,它看起来像你已经有一个数组** **双打。并且看[文档](http://www.mathworks.com/help/stats/ksdensity.html#outputarg_f)它肯定已经是一个数组/矢量。 – Suever

回答

1

ksdensity的第一个输出是已经是一个数组/矢量。

在MATLAB中,数组不是。从技术上讲,全部 MATLAB变量是数组(任何标量实际上是1 x 1数组)。

因此,如果我们创建一个数组:

x = [1.1, 1.2, 1.3]; 

类是double

class(x) 

    double 

或者整数

y = uint8([1,2,3]); 

class(y) 

    uint8 

或数组,即使我们得到真的疯了,我们可以有一排structs

z = [struct(), struct(), struct()]; 

class(z) 

    struct 

因此,您希望对输出执行的任何操作(作为数组)都可以在没有任何转换的情况下完成。

其它数据类型(如cell arrays)可能需要一些转换得到遂成数字数组,但你不能在这一点上与处理。并且您可以随时查看它们的类型iscellclass(data) == 'cell'

相关问题