我有两个数据集,比如说data1和data2。 data1是20x12矩阵,data2是12x6矩阵。我想创建一个新的矩阵X,它将包含以下内容:
第一个单元格将是第一行data1与第一列data2的元素乘法的总结。第二行的第一个元素是第二行data1与第一列data2的元素乘法的总结。 ......第20行的第一个元素是第20行data1与第1列data2的元素乘法的总结。
以类似的方式,它必须是其余列。例如,第一行的第二个单元格将是第一行data1与第二列data2等的元素乘法的总结。 我尝试了以下但我不熟悉Matlab中的编程,通常还有数学,
data1 = xlsread(...); % i insert the datasets
data2 = xlsread(...);
for i=1:20
for j=1:6
data3 = sum(data1(i,:).*data2(:,j));
end
end
但它不起作用,有人可以帮我弄清楚如何做或给我一个工作链接? 提前谢谢!
答案 0 :(得分:0)
您的代码出现问题
您的代码有3个问题:
尺寸不匹配: data1(i,:)的大小为1x12,而data2(:,j)的大小为12x1。为了使它们相乘,你需要使用其中一个的转置。
分配不当:每次迭代都会覆盖data3,您应该使用i,j索引来执行正确的分配。
初始化:最佳用法是在运行for循环之前初始化data3。
处理这些问题
以下代码处理上述所有问题:
data3 = zeros(20,6);
for i=1:20
for j=1:6
data3(i,j) = sum(data1(i,:)'.*data2(:,j));
end
end
更好的解决方案
使用常规矩阵乘法实际上可以获得相同的结果。这可以按如下方式完成:
data3 = data1*data2;
答案 1 :(得分:0)
您正在寻找矩阵乘法:
data3 = data1 * data2;
这是线性代数中的基本操作,因此在MATLAB中很容易计算。