【问题标题】:Matlab array multiplication after linear indexing线性索引后的Matlab数组乘法
【发布时间】:2017-03-12 10:09:25
【问题描述】:

我有 2 个矩阵定义如下:

A=[1 2;3 4]   
B=[1 4; 5 3]

然后我像这样定义AensemBensemGensem

Arow=A(:);     
Brow=B(:);

Aensem=repmat(Arow,1,10);    
Bensem=repmat(Brow,1,10);

G=A*B;
Grow=G(:);
Gensem=repmat(Grow,1,10);

我需要创建一个可以直接从AensemBensem 计算任何Gensem 类数组的函数。我只知道AensemBensem。我尝试了以下方法,但它不起作用:

function ret = mat_mult(v1, v2, r)
    ret = zeros(size(v1)); 
    for i = 1:2*r.c.M
        for j = 1:2*r.c.M
            sum = 0;
            for k = 1:2*r.c.M
                sum = sum + ...
                    v1(idx1(i,k,r),:) .* v2(idx1(k,j,r),:);
                ret(idx1(i,j,r),:)=sum;
            end
        end
    end            
end     

【问题讨论】:

  • mat_mult的作用是什么?你定义了它,但从未使用它。
  • “不工作”不是 SO 的有效问题陈述。请说明什么是错误的:计算是否导致错误的值?你有错误吗?它是否适用于某些输入而不适用于其他输入?运行代码时你的电脑会起火吗?

标签: arrays matlab matrix sum multiplication


【解决方案1】:

如果我正确理解您的问题,您想直接从AensemBensem 计算Gensem。这可以按如下方式完成:

A_ = reshape(Aensem(:, 1), 2, 2); % extract A from Aensem
B_ = reshape(Bensem(:, 1), 2, 2); % extract B from Bensem
G_ = A_*B_; % calculate G based on the extracted A and B
Gensem_ = repmat(G_(:),1,10); % build Gensem

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 2018-08-23
    • 2019-02-07
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多