How to find the max of a cell of a cell array
152 次查看(过去 30 天)
显示 更早的评论
I'm having issues finding the max of TR4. It's stating that max is undefined.
for s=1:34
TR1{s}=abs((prices{1,3}{1,s}(2:end))-(prices{1,4}{1,s}(2:end)));
TR2{s}=abs((prices{1,3}{1,s}(2:end))-(prices{1,5}{1,s}(1:end-1)));
TR3{s}=abs((prices{1,5}{1,s}(1:end-1))-(prices{1,4}{1,s}(2:end)));
TR4{s}={TR1(1,s) TR2(1,s) TR3(1,s)};
TR{s}=cellfun(@max,TR4(1,s))
end
回答(3 个)
John BG
2016-12-15
if all cells have same base type, you can use the following
T1={1 2 3 4}
cell2mat(T1)
max(cell2mat(T1))
ans =
4
something a bit more complicated would be to build a function like find() for cells because cells may have custom indices, the find_for_cells should map the cell first.
Do you only want to find max value or also find the matrix coordinates of max value?
If you supply the cell prices or a fragment of it I will have a look whether it would be easy to build the find_cell() function.
if you find this answer useful would you please be so kind to mark my answer as Accepted Answer?
To any other reader, please if you find this answer of any help solving your question,
please click on the thumbs-up vote link,
thanks in advance
John BG
Walter Roberson
2016-12-15
The result is not well defined. You have a cell array of cell arrays each of which has an vector in it. Which maximum are you looking for?
Have you considered
TR4{s} = [TR1(1,s) TR2(1,s) TR3(1,s)];
2 个评论
Walter Roberson
2016-12-15
Do you want the max of each corresponding position? If so then
TR4{s} = [TR1{1,s}; TR2{1,s}; TR3{1,s}];
TR{s} = max(TR4{s});
Image Analyst
2016-12-15
Please show the entire error message -- ALL the red text, not just a small part of it. I don't know why your max function would no longer be defined. What does this say if you type it on the command line:
>which -all max
What does it show?
2 个评论
Image Analyst
2016-12-15
Try putting brackets around the numbers to make a numerical vector, and then assigning it to another numerical vector. There is certainly no need to store the maxima in a cell array - that's an unnecessary complication.
theMaxes(s) = max([TR1{s},TR2{s},TR3{s}])
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!