MATLAB中

时间:2018-04-22 13:10:50

标签: matlab matrix matlab-figure matrix-multiplication

我有两个数据集,比如说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

但它不起作用,有人可以帮我弄清楚如何做或给我一个工作链接? 提前谢谢!

2 个答案:

答案 0 :(得分:0)

您的代码出现问题

您的代码有3个问题:

  1. 尺寸不匹配: data1(i,:)的大小为1x12,而data2(:,j)的大小为12x1。为了使它们相乘,你需要使用其中一个的转置。

  2. 分配不当:每次迭代都会覆盖data3,您应该使用i,j索引来执行正确的分配。

  3. 初始化:最佳用法是在运行for循环之前初始化data3。

  4. 处理这些问题

    以下代码处理上述所有问题:

    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中很容易计算。