Find indices with for loop

I am designing a code to find the cheapest gear box pair that can meet a certain force requirement.
The requirement, for example in my code is WearPinionLD, is a 37x7 matrix, and Ft the force is 37x1 matrix. I intend to find the indices of the WearPinionLD of each row w.r.t the same row of Ft with for loop:
for i=1:37
index(i)=find(WearPinionLD(i,:)>=Ft(i));
end
but matlab said the LHS and RHS sized differently.

 Accepted Answer

VBBV
VBBV on 27 Feb 2022
Edited: VBBV on 27 Feb 2022
WearPinionLD = rand(37,7);
Ft = rand(37,1);
for i=1:37
index{i} =find(WearPinionLD(i,:)>=Ft(i));
end
index.'
ans = 37×1 cell array
{[ 1 2 3 4 6 7]} {1×0 double } {[ 2 5 6 7]} {[ 6 7]} {[ 1 4 5 6 7]} {[1 2 3 4 5 6 7]} {1×0 double } {[ 2 3 4 6 7]} {[ 2 3 4 5 6 7]} {[ 2 3 4 7]} {[ 1 2 5 6 7]} {[ 1 4 6 7]} {[ 1 2 3 4 5 6]} {[ 3 4]} {[ 3 6]} {[ 1 3 4 5 6 7]}

5 Comments

It finds indices for all columns.
it became 'Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-0.'...
Try it using cell array. See the edited code above.
As the indices array are irregularly sized based on find condition, use a cell array.
Probelm solved!!!! Thank you so much :))

Sign in to comment.

More Answers (0)

Categories

Find more on Numerical Integration and Differential Equations in Help Center and File Exchange

Products

Release

R2021b

Asked:

on 27 Feb 2022

Edited:

on 27 Feb 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!