我有一个矩阵,名为p_c_w,尺寸为6X7599,另一个矩阵命名为p_w,尺寸为1X7599。我希望他们的元素倍增,但我无法做到这一点。对于p_c_w的行大小和p_w的列的大小相同,我已经对p_c_w进行了转置并将其存储在anss中。我收到的错误是:订阅的分配维度不匹配。
代码如下。有人可以帮忙吗?
提前多多感谢
anss=p_c_w'
for i=1:size(anss,1)
for j=1:size(p_w,2)
temp(j,i)=anss(i,j).*p_w(j);
end
end
答案 0 :(得分:3)
使用bsxfun
:
A = [ 1 2 3 4 5;
1 2 3 4 5;
1 2 3 4 5 ];
B = [ 1 10 100 1000 10000];
C = bsxfun(@times,A,B)
返回:
C =
1 20 300 4000 50000
1 20 300 4000 50000
1 20 300 4000 50000
A'
与B'
所以对你的情况来说:
temp = bsxfun(@times,p_c_w,p_w)
答案 1 :(得分:0)
从R2016b版本开始,您无需使用bsxfun进行此操作。例如,以下代码将与@thewaywewalk的答案完全相同。
A = [ 1 2 3 4 5;
1 2 3 4 5;
1 2 3 4 5 ];
B = [ 1 10 100 1000 10000];
C = A.*B