【问题标题】:Filling a matrix with vectors in loop and apply operation在循环中用向量填充矩阵并应用操作
【发布时间】:2018-11-26 20:09:01
【问题描述】:

我正在研究带有矩阵的 matlab。我想重现这个矩阵并对行中的元素应用总和。

我有两个由这段代码定义的向量:

unitsvector=1:5;
reordervector=1:3;

然后,我创建一个空矩阵来存储值:

resultvec=zeros(size(unitsvector,2)*size(reordervector,2),3);

最后,这是我使用的循环,但它不起作用:

for a=1:length(resultvec)
    for b=reordervector
        for c=unitsvector
            resultvec(a,1)=b;
            resultvec(a,2)=c;
            resultvec(a,3)=b+c;
        end
    end
end

如何在 matlab 中重现此矩阵。感谢您的帮助。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以使用 meshgrid 来完成此操作,而无需使用 for 循环。

    [a,b] = meshgrid(1:5,1:3); 
    M = [a(:) b(:)];
    M(:,3) = sum(M,2); % Create third column by summing first two
    

    【讨论】:

    • 我什至没有考虑实际的矢量创建,我错过了。很好地抓住了它,你的答案现在比我的要好得多。
    【解决方案2】:

    你为什么要循环播放? sum 实际上有向量支持;一个简单的resultvec = [a(:,1),a(:,2),sum(a,2)] 就可以了。


    至于您的代码:当然它不起作用。你希望a 的内容是什么?您创建a 作为循环索引,它在1:length(resultvec) 范围内运行。因此,在每个循环迭代中 a 是一个标量。您尝试将其称为三元素向量。你也没有定义bc。根据您来自哪里,这在 R 中可能是可能的,但在 MATLAB 中则不然。

    【讨论】:

      猜你喜欢
      • 2013-01-19
      • 1970-01-01
      • 2011-09-29
      • 2019-05-27
      • 2017-12-01
      • 1970-01-01
      • 2021-07-11
      • 2014-11-21
      相关资源
      最近更新 更多