【发布时间】:2015-03-24 20:22:49
【问题描述】:
我有一个 15*15 的二进制矩阵,我将每一行乘以其转置来从外部乘积中得到另一个矩阵,然后将这些矩阵相或得到一个最终矩阵。我正在尝试使用 for 循环来执行此操作,因为我有 15 行,并且我可能会增加它以拥有大量行,因此手动执行此操作是没有意义的。对于转置乘法的行,我关注rayryeng answer。然而,我想应用于整个矩阵。所以,我正在使用以下代码。
VectMat=randi([0 1],15,15);
resultt=zeros(15,15)
for i= 1:15
row{i}=VecMat(1,:);
result{i} = bsxfun(@times, row{i}.', row{i});
resultt=result|resultt
end
我收到一个错误,我知道使用 '{ }' 不正确,但如果我尝试使用 '[ ]',matlab 会将 'resultt' 视为一个数组,并会继续以这种方式添加它.我的伪代码是,在第一次迭代中,“i”将是一个,所有包含“{i}”的变量都将是变量号 1,然后在下一次迭代中,“i”将是 2,依此类推。那么,我可以在matlab上做到这一点吗?
【问题讨论】:
-
这是一篇您应该考虑阅读的帖子:stackoverflow.com/questions/25877835/… - 这与 Divakar 在下面回答您时使用的方法基本相同。每个外部产品作为切片放置在 3D 矩阵中,所有结果都使用
any合并在一起,这模拟了所有切片的逻辑 OR。