【问题标题】:Matlab. How to make a vector into the header of a matrix and so turning it into a table or data setMATLAB。如何将向量制作成矩阵的标题,然后将其变成表格或数据集
【发布时间】:2015-04-23 00:40:26
【问题描述】:

在 matlab 中作为另一组代码的一部分。我正在尝试制作一个表格或数据集,其中一个矩阵作为数据,一个数字向量作为标题。向量的第一个元素是第一列的标题,依此类推。这是矩阵和向量的一些示例代码。

p_vec = 0:0.5:1;
M = rand(10,length(p_vec));

经过一番折腾,我可以得到:

header = 100*p_vec;
header = arrayfun(@num2str, header, 'UniformOutput', false)
Table = mat2dataset(M,'VarNames',header);

生成带有几乎正确标题的表格。除了标题中的每个数字前都有一个 x。之后我可以摆脱它们或用 % 符号替换它们吗? x 可能是为了确保 Matlab 在制作表格时不会将字符串与数字混淆。

【问题讨论】:

  • 请更清楚您希望达到的目标。也许可以提供最终结果的示例。谢谢
  • 表格列名不能包含点,所以不能使用0.5作为列标题。见mathworks.com/help/matlab/ref/array2table.html#namevaluepairs
  • 我正在使用的代码中 p_vec 中使用的最低值是 0.05。它代表一个比例,所以乘以 100 并将其作为百分比,然后使用百分比向量,因为标题可以解决问题。

标签: matlab matrix vector


【解决方案1】:

如果我正确地解释了你想要的,你就有了一个数字矩阵:

m = [1 2 3 4 5;
     6 7 8 9 0;
     1 2 3 4 5;
     6 7 8 9 0];

你有一个数字列名的向量:

names = [10 20 30 40 50];

而你希望得到这样的结果:

f = [10 20 30 40 50
     1  2  3  4  5;
     6  7  8  9  0;
     1  2  3  4  5;
     6  7  8  9  0];

那么你会想要这样的东西:

f = [names; m];

编辑:如果您想要更类似于 R 命名矩阵中的列的功能,让您使用名称来访问矩阵的各个部分,我不知道 matlab 是否具有此功能。

【讨论】:

  • 将列向量连接到矩阵的顶部。您可以在将表格保存为 csv 文件之前为表格设置标题。
  • 对不起,我在看到您的编辑之前写了这个答案。我没有任何经验做你想做的事,我不确定你为什么会得到那些 x。
【解决方案2】:

在 MATLAB 中,表头是一个变量。 MATLAB 不支持以非字母开头的变量。

“有效的变量名是由字母、数字和下划线组成的字符串,总计不超过 namelengthmax 个字符,并以字母开头。” - doc isvarname

顺便在命令窗口调用namelengthmax显示标识符的最大长度为63

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2011-12-21
    • 2020-06-15
    相关资源
    最近更新 更多