有没有方便的方法在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) 我有下表,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也不行.我需要测试才能简单地返回真或假的结果.
我有两个表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) 我想生成一张表,但只想设置一个变量的变量名,但希望所有其他变量保留其名称。
例如,假设我有以下数据:
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表NaN,如何将此表写为excel或csv文件,其中NaN被空格替换?
我使用以下功能:
T = table(NaN(5,2),'VariableNames',{'A','C'})
writetable(T, filename)
Run Code Online (Sandbox Code Playgroud)
我不想用零替换它.我想要输出文件:
我试图弄清楚如果行的某个变量具有某个值,如何从表中提取行。我知道如何在 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 中有下表:
A=
86 84
45 65
2 42
44 29
Run Code Online (Sandbox Code Playgroud)
MATLAB 自动为此表返回两列的列名称A1和A2,其中A是表的集合名称。
如何手动更改每列的名称?
matlab ×7
matlab-table ×7
boolean ×1
data-mining ×1
excel ×1
matrix ×1
rename ×1
tabular ×1
time-series ×1
timestamp ×1