标签: matlab-table

显示带行标签和列标签的矩阵

有没有方便的方法在Matlab终端中显示带行和列标签的矩阵?像这样的东西:

M = rand(5);
displaymatrix(M, {'FOO','BAR','BAZ','BUZZ','FUZZ'}, ...
                 {'ROW1','ROW2','ROW3','ROW4','ROW5'});    %??
Run Code Online (Sandbox Code Playgroud)

收益:

        FOO       BAR       BAZ       BUZZ      FUZZ
ROW1    0.1622    0.4505    0.1067    0.4314    0.8530
ROW2    0.7943    0.0838    0.9619    0.9106    0.6221
ROW3    0.3112    0.2290    0.0046    0.1818    0.3510
ROW4    0.5285    0.9133    0.7749    0.2638    0.5132
ROW5    0.1656    0.1524    0.8173    0.1455    0.4018
Run Code Online (Sandbox Code Playgroud)

更好的是具有一些ASCII艺术细节:

     |   FOO       BAR       BAZ       BUZZ      FUZZ
-----+-------------------------------------------------
ROW1 |   0.1622    0.4505    0.1067    0.4314    0.8530
ROW2 |   0.7943    0.0838    0.9619    0.9106    0.6221
ROW3 |   0.3112    0.2290    0.0046    0.1818    0.3510
ROW4 |   0.5285    0.9133    0.7749    0.2638 …
Run Code Online (Sandbox Code Playgroud)

matlab matrix tabular matlab-table

21
推荐指数
3
解决办法
8万
查看次数

表Matlab中列的存在性测试

我有下表,T:

      Hold       Min    Max 
    _________    ___    ____

     0.039248    0      0.05
     0.041935    0      0.05
     0.012797    0      0.05
    0.0098958    0      0.05
     0.014655    0      0.05
Run Code Online (Sandbox Code Playgroud)

如何测试表中的列是否存在?例如isfield(T,'Hold')返回0.Exist,isstruct也不行.我需要测试才能简单地返回真或假的结果.

matlab boolean matlab-table

3
推荐指数
1
解决办法
1321
查看次数

如何通过匹配时间间隔在Matlab(2018)中连接表?

我有两个表A和B.我想根据它们的有效时间间隔加入它们.

A具有产品质量(不规则时间),B在生产期间具有每小时设置.我需要创建一个像C这样的表,其中包含所有A的RefDates的参数p1和p2,这些参数位于B的ValidFrom ValidTo的时间范围内.

A
RefDate                 result
'11-Oct-2017 00:14:00'  17
'11-Oct-2017 00:14:00'  19
'11-Oct-2017 00:20:00'  5
'11-Oct-2017 01:30:00'  25
'11-Oct-2017 01:30:00'  18
'11-Oct-2017 03:03:00'  28


B
ValidFrom               ValidTo                 p1  p2
'11-Oct-2017 00:13:00'  '11-Oct-2017 01:12:59'  2   1
'11-Oct-2017 01:13:00'  '11-Oct-2017 02:12:59'  3   1
'11-Oct-2017 02:13:00'  '11-Oct-2017 03:12:59'  4   5
'11-Oct-2017 03:13:00'  '11-Oct-2017 04:12:59'  6   1
'11-Oct-2017 04:13:00'  '11-Oct-2017 05:12:59'  7   9
Run Code Online (Sandbox Code Playgroud)

我需要得到这样的东西.

C
RefDate                 res p1  p2
'11-Oct-2017 00:14:00'  17  2   1
'11-Oct-2017 00:14:00'  19  2   1
'11-Oct-2017 00:20:00'  5   2   1 …
Run Code Online (Sandbox Code Playgroud)

matlab timestamp time-series data-mining matlab-table

3
推荐指数
1
解决办法
85
查看次数

如何仅重命名 MATLAB 表中的几个变量?

我想生成一张表,但只想设置一个变量的变量名,但希望所有其他变量保留其名称。

例如,假设我有以下数据:

User1 = rand(5,1);
User2 = rand(5,1);
User3 = rand(5,2);
Run Code Online (Sandbox Code Playgroud)

我现在可以使用以下方法制作表格:

table(User1 , User2 , User3(:,1))
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

ans = 

 User1       User2        Var3  
________    ________    ________

 0.55229    0.049533     0.14651
 0.62988     0.48957     0.18907
0.031991     0.19251    0.042652
 0.61471     0.12308      0.6352
 0.36241     0.20549     0.28187
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

ans = 

 User1       User2        User3  
________    ________    ________

 0.55229    0.049533     0.14651
 0.62988     0.48957     0.18907
0.031991     0.19251    0.042652
 0.61471     0.12308      0.6352
 0.36241     0.20549     0.28187
Run Code Online (Sandbox Code Playgroud)

我试图这样做:

table(User1 , User2 , User3(:,1), 'VariableNames',{'','','User3'} )
Run Code Online (Sandbox Code Playgroud)

但这给出了错误:

Error using setVarNames (line 33)
The …
Run Code Online (Sandbox Code Playgroud)

matlab matlab-table

3
推荐指数
1
解决办法
762
查看次数

可写的在Matlab中用空格替换NaN

给定一个包含很多的Matlab表NaN,如何将此表写为excel或csv文件,其中NaN被空格替换?

我使用以下功能:

T = table(NaN(5,2),'VariableNames',{'A','C'})

writetable(T, filename)
Run Code Online (Sandbox Code Playgroud)

我不想用零替换它.我想要输出文件:

  1. 对NaN和.有空白
  2. 变量名称包含在输出中.

excel matlab matlab-table

1
推荐指数
1
解决办法
1536
查看次数

Matlab - 从表中提取具有特定列值的行

我试图弄清楚如果行的某个变量具有某个值,如何从表中提取行。我知道如何在 R 中做到这一点,但在 Matlab 中无法弄清楚。例如,假设这是我的表:

Var1    Var2    Var3
_____  _____   ______
 1.0    2.0   'class 1'
 1.1    2.1   'class 2'
 1.2    2.2   'class 3'
 1.3    2.3   'class 1'
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何获取 Var3 具有“class 1”值的所有行。具体来说,我想要这个:

Var1    Var2    Var3
_____  _____   ______
 1.0    2.0   'class 1'
 1.3    2.3   'class 1'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经使用关键字参数,在列出试过这个帖子,以及使用MATLAB行,试图排序一切。两者都没有奏效。

假设 T 是我的桌子。首先,我试过

T(T.Var5 == 'class 1',:) 
Run Code Online (Sandbox Code Playgroud)

但得到了错误:

Undefined operator '==' for input arguments of type 'cell'.
Run Code Online (Sandbox Code Playgroud)

然后,我决定发挥一点创意,看到您可以在 Matlab 文档中创建行名称。所以我这样做了:

A = T{:,{1:2}};
B = T{:,{3}};
B = table2array(B);
A.Properties.RowNames = B; …
Run Code Online (Sandbox Code Playgroud)

matlab matlab-table

1
推荐指数
1
解决办法
884
查看次数

更改现有表的列名称

我在 MATLAB 中有下表:

A= 

    86   84
    45   65
     2   42
    44   29
Run Code Online (Sandbox Code Playgroud)

MATLAB 自动为此表返回两列的列名称A1A2,其中A是表的集合名称。

如何手动更改每列的名称?

matlab rename default-value variable-names matlab-table

1
推荐指数
1
解决办法
1393
查看次数