我有两个变量,targetinput和M.两个变量都是4x800。
例如:
变量目标输入(前10个数据):
对于y轴,1 =正常,2 =说话,3 =笑,4 =困。
变量M(前10个数据):
对于y轴,1 =正常,2 =说话,3 =笑,4 =困。
我想生成一个x轴= targetinput和y轴= M的表。
我想要生成的表的示例:
这是前5个数据的示例,最终结果将是每行和每列的总和。我想要生成的表可以是MatLab中的新变量或xslx文件。
我是MatLab的新手。感谢您的帮助。
答案 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]);