我有两个向量, R 和 C ,它们分别具有我需要在一个矩阵中组装的子矩阵的行数和列数我(40x20)。共有12个子矩阵。
apply(df, 1, function(x) dist_point_line(as.numeric(x[1:2]), slope = 1, intercept = 0) )
#[1] 0.0000000 0.7071068 1.4142136 2.1213203 2.8284271 3.5355339 2.8284271 2.1213203 1.4142136 0.7071068
此外,每个子矩阵的所有元素都将其值存储在向量 k 中:
R = [4 2 4 4 2 4];
C = [4 16 16 4];
因此,例如,子矩阵 M (1:4,1:4)有4行,4列,值等于k(1)= 1。
问题:如何将矩阵M与所有子矩阵组合在一起?
有什么想法吗? 谢谢!
修改:
和子矩阵:
和k的值:
答案 0 :(得分:1)
这是一个矢量化解决方案:
def multi_file_line_iterator(files_to_check):
print_header()
for file in files_to_check:
print("Checking file: {}".format(file), end="")
with open(file) as f:
for num, line in enumerate(f, 1):
print("-- Checking line: {}".format(num), end="")
yield line
print("done with line")
print("done with file")
print("FOUND:", found)
print_footer()
return found
found = 0
for line in multi_file_line_iterator(files_to_check):
found += checker(line)
相反,你可以使用单元格数组,用子矩阵填充它,然后将单元格数组转换为矩阵。
R1 = repelem(1:numel(R), R);
C1 = repelem(1:numel(C), C);
[CC RR] = meshgrid(C1, R1);
idx = sub2ind([numel(R), numel(C)], RR, CC);
result = k(idx);