MATLAB:获取向量结构的最小 x 值
Posted
技术标签:
【中文标题】MATLAB:获取向量结构的最小 x 值【英文标题】:MATLAB: get min x value of struct of vectors 【发布时间】:2021-06-26 22:15:47 【问题描述】:我有一个结构体,其中包含一个名为位置的字段,其中包含向量。 例如:
mystruct(1) = struct('position', [1,3,3])
mystruct(2) = struct('position', [2,2,0])
mystruct(3) = struct('position', [3,1,-3])
并且不使用 for 循环我想获得最小 x、y 和 z 位置 -> [1,1,-3]
这可能吗?
【问题讨论】:
"不使用 for 循环" 如果这些向量很大和/或它们很多,那么创建允许您在不使用循环的情况下执行此操作的中间数组将比使用更昂贵一个循环。不要害怕循环,在决定哪个更快之前,始终将矢量化方法与普通旧循环的时间进行比较,以获得有意义的用例。你会惊讶很多次。 【参考方案1】:也许你可以试试下面的vertcat
>> min(vertcat(mystruct.position),[],1)
ans =
1 1 -3
在哪里
>> vertcat(mystruct.position)
ans =
1 3 3
2 2 0
3 1 -3`
【讨论】:
【参考方案2】:你需要get the struct field as a vector
positions = [mystruct.position]
% positions: [1 3 3 2 2 0 3 1 -3]
然后,reshape 将该向量发送到Nx3
。为行数提供一个空数组告诉 MATLAB 自动计算行数,以便我们拥有三列:
positions = reshape(positions, [], 3)
% positions:
% 1 2 3
% 3 2 1
% 3 0 -3
然后,找到rowwise minimum。
result = min(positions, [], 2)
% result:
% 1
% 1
% -3
【讨论】:
以上是关于MATLAB:获取向量结构的最小 x 值的主要内容,如果未能解决你的问题,请参考以下文章