Arrays 线性索引后的Matlab数组乘法
我有两个矩阵,定义如下:Arrays 线性索引后的Matlab数组乘法,arrays,matlab,matrix,sum,multiplication,Arrays,Matlab,Matrix,Sum,Multiplication,我有两个矩阵,定义如下: A=[1 2;3 4] B=[1 4; 5 3] 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); % bui
A=[1 2;3 4]
B=[1 4; 5 3]
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
然后我定义Aensem
,Bensem
和Gensem
如下:
Arow=A(:);
Brow=B(:);
Aensem=repmat(Arow,1,10);
Bensem=repmat(Brow,1,10);
G=A*B;
Grow=G(:);
Gensem=repmat(Grow,1,10);
我需要创建一个函数,可以直接从Aensem
和Bensem
计算任何Gensem
类数组。我只知道Aensem
和Bensem
。我尝试了以下方法,但不起作用:
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
如果我正确理解您的问题,您希望直接从
Aensem
和Bensem
计算Gensem
。这可以通过以下方式完成:
A=[1 2;3 4]
B=[1 4; 5 3]
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
如果我正确理解您的问题,您希望直接从
Aensem
和Bensem
计算Gensem
。这可以通过以下方式完成:
A=[1 2;3 4]
B=[1 4; 5 3]
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
材料的功能是什么?您定义了它,但从未使用过它。“不工作”不是有效的问题陈述。请指定错误:计算是否导致错误值?你有错误吗?它对某些输入有效,而对其他输入无效吗?运行代码时,您的计算机是否着火?mat\u mult的功能是什么?您定义了它,但从未使用过它。“不工作”不是有效的问题陈述。请指定错误:计算是否导致错误值?你有错误吗?它对某些输入有效,而对其他输入无效吗?当你运行代码时,你的电脑会着火吗?