如何解决是否对相同对象名称进行连续定义以覆盖或附加Matlab中的值
我试图将一些代码从matlab转换为R,而没有任何在matlab中进行编码的实践经验。我了解在matlab中,您可以像这样[a,b]=fun(x)
那样在单个调用中定义多个对象。现在,我有两种直接连续的代码重复定义的对象的情况:
[x_min,ind] = min(x_min_vec);
[x_min,ind] = max(x_min_vec);
我假设第一行找到了x_min_vec
及其索引的最小值,并将它们保存在对象x_min
和ind
中。但是第二行是做什么的呢?它只是覆盖对象还是将最大值和索引附加到现有对象上?
x_min_vec
是一个长度为> = 1的数字矢量。
感谢您的反馈,
大卫
解决方法
Matlab支持面向对象的编程。但是这两行代码不是这样的例子。因此,第二行返回最大值及其位置,第一行返回的x_min
和ind
将被覆盖。
在这种情况下,它会使用向量的最大值(在def even_sum_pooling(matrix):
n = matrix.shape[0]
summ = 0
for i in range(n):
if matrix[i]% 2 == 0:
summ +=matrix[i]
return summ
def total(row):
summ = 0
for num in row:
summ +=num
return summ
def pool2d(A,kernel_size,stride,padding,pool_mode='max'):
'''
2D Pooling
Parameters:
A: input 2D array
kernel_size: int,the size of the window
stride: int,the stride of the window
padding: int,implicit zero paddings on both sides of the input
pool_mode: string,'max' or 'avg'
'''
# Padding
A = np.pad(A,mode='constant')
# Window view of A
output_shape = ((A.shape[0] - kernel_size)//stride + 1,(A.shape[1] - kernel_size)//stride + 1)
kernel_size = (kernel_size,kernel_size)
A_w = as_strided(A,shape = output_shape + kernel_size,strides = (stride*A.strides[0],stride*A.strides[1]) + A.strides)
A_w = A_w.reshape(-1,*kernel_size)
# Return the result of pooling
temp = np.apply_along_axis(even_sum_pooling,2,A_w)
return np.apply_along_axis(total,1,temp).reshape(output_shape)
中)和索引(在x_min
中)覆盖这两个变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。