Find the closest match values in cell array
显示 更早的评论
Hi guys, I got a cell array and I want to find the index of the array that closest match my defined values. Here is my cell array:
A =
[565.11,579.965]
[567.016,581.921]
[574.162,589.256]
575.909
[568.804,583.373]
[570.197,584.803]
[566.005,576.676,587.758]
As you can see the length of each row is not the same, that's why I couldn't put it in the form of a normal array. So, if I want to find the index that is the closest match 567.5 and 586.5. How can I do that?
Thanks!
回答(2 个)
the cyclist
2017-3-10
Here's one way:
A = {
[565.11,579.965]
[567.016,581.921]
[574.162,589.256]
575.909
[568.804,583.373]
[570.197,584.803]
[566.005,576.676,587.758]};
val = 567.5;
[~,indexToClosestMatch] = min(cellfun(@(x)min(abs(x-val)),A));
3 个评论
Catherine
2017-3-10
Image Analyst
2017-3-10
So what's wrong with just doing it twice???
val = 567.5;
[~,indexToClosestMatch1] = min(cellfun(@(x)min(abs(x-val)),A));
val = 586.5;
[~,indexToClosestMatch2] = min(cellfun(@(x)min(abs(x-val)),A));
Star Strider
2017-3-10
She’s looking for a row match with an impossible condition.
Star Strider
2017-3-10
‘How can I do that?’
One approach:
A = {[565.11,579.965]
[567.016,581.921]
[574.162,589.256]
575.909
[568.804,583.373]
[570.197,584.803]
[566.005,576.676,587.758]};
v = [567.5 586.5];
sz = cellfun(@(x)size(x,2), A, 'Uni',0); % Calculate Sizes Of Vectors
A_idx = cellfun(@(x)eq(x,2), sz, 'Uni',0); % Select Only Elements Of ‘A’ With 2 Columns
A_sel = A(cell2mat(A_idx)); % Elements Of ‘A’ Meeting Criteria
D = pdist2(v,cell2mat(A_sel)); % Distance Between ‘v’ And Elements Of ‘A’
[~,MinIdx] = min(D); % Indes OF Minimum Distance
A_closest = A_sel{MinIdx} % Element Values Of Minimum Distance
A_closest =
570.2 584.8
5 个评论
Catherine
2017-3-10
Star Strider
2017-3-10
‘last row of A with 576.676 and 587.758 in the 2nd and 3rd column’
It would have been helpful if you had mentioned that in your original Question. Such details are important.
Cell array indexing is difficult, and that is not possible.
Catherine
2017-3-15
Star Strider
2017-3-15
No worries. My pleasure.
Catherine
2017-3-15
类别
在 帮助中心 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!