如何在MatLab中基于两个变量创建表?

时间:2014-12-02 19:18:00

标签: matlab

我有两个变量,targetinput和M.两个变量都是4x800。
例如:
变量目标输入(前10个数据):
Variable targetinput
对于y轴,1 =正常,2 =说话,3 =笑,4 =困。


变量M(前10个数据):
enter image description here
对于y轴,1 =正常,2 =说话,3 =笑,4 =困。

我想生成一个x轴= targetinput和y轴= M的表。
我想要生成的表的示例:
enter image description here
这是前5个数据的示例,最终结果将是每行和每列的总和。我想要生成的表可以是MatLab中的新变量或xslx文件。
我是MatLab的新手。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

诀窍是使用带有两个输出的find将0/1编码数据转换为索引,然后accumarray计算出现次数:

% determine for each column the index of the row that contains the 1
[targetinput_row, ~] = find(targetargetinputnput);
[M_row, ~] = find(M);
% determine size of table
n_M = size(M, 1);
n_targetinput = size(targetargetinputnput, 1);
% count number of times a pair of row indices occurs
table = accumarray([M_row, targetinput_row], 1, [n_M n_targetinput]);