【发布时间】:2016-01-17 05:18:42
【问题描述】:
我有一个矩阵 M:
M=rand(n,m)
和一个长度为 m^n 的数组 K
K=zeros(m^n,1)
数组 K 填充了通过对所有可能的 m^n 个单元格垂直组合的 n 行中的矩阵 M 的值求和而获得的值。长度为 m^n 的辅助数组索引包含对单元格组合的索引引用,以便索引数组的列索引指示矩阵 M 的行和索引数组的值 - 矩阵 M 的列。在下面的示例中对于 4x3 矩阵,Index 数组的第二行 {1,1,1,2} 对应于单元格 M(1,1)、M(2,1)、M(3,1) 和 M(4 ,2) 等:
Index =
1 1 1 1
1 1 1 2
1 1 1 3
1 1 2 1
…
然后使用该索引引用来计算存储在 K 中的每个单元组合的值(总和):
for i=1:m^(n)
for j=1:n
K(i)= K(i)+M(j,Index(i,j))
end
end
到目前为止,它工作正常。然而,我需要的是引入一个“if”条件,以便如果矩阵 M 的任何单元格等于零,那么包含此零值(单元格)的任何组合的值也将为零.我试图在 for 循环中引入它:
假设
M(1,1)=0
M(3,1)=0
然后
for i=1:m^(n)
for j=1:n
if M(j,Index(i,j))~=0
K(i)= K(i)+M(j,Index(i,j))
else
K(i)=0
end
end
end
此解决方案似乎不起作用,因为它无法识别与零值单元格关联的单元格组合,我无法找出解决方法。有谁知道如何解决这个问题?谢谢!
【问题讨论】:
标签: arrays matlab if-statement for-loop matrix