About the use of find

4 ビュー (過去 30 日間)
A
A 2021 年 8 月 23 日
コメント済み: A 2021 年 8 月 23 日
I want to detect values greater than 10 and get their indices.
In my case, I'm using find to get the index as follows.
y = find( x > 10 );
I think find is finding the value greater than 10 in all elements of x and getting the index.
So I have a question.
Does find start computing at the moment when all the elements of x are given, rather than at the moment when any element of x is given?
I would like to perform the computation at the moment when even one element of x is given, do the same process as find, get the same index, and store it in the same way.
In that case, what kind of program should I write? It would be great if you could post your program.
  4 件のコメント
A
A 2021 年 8 月 23 日
編集済み: A 2021 年 8 月 23 日
Dear Yazan
Thank you for your answer.
I am sorry that my questions are poorly written and difficult to understand.
In this case, I'm considering the data to be obtained from the simulink in real time as x.
In that case, will find calculate the value of x in real time?
Or does it start calculating after the simulink simulation is finished and all the data for x is ready?
I would like to perform the computation at the moment when even one element of x is given, do the same process as find, get the same index, and store it in the same way.
Regarding the above question...
"How can I write a program that does the same thing as find, but computes it in real time?
A
A 2021 年 8 月 23 日
Dear Stephen Cobeldick
Thank you for your answer.
I learned that find returns the linear/subscript index of the logical array.
If I want to get the linear/subscript index of a logical array, is there any other way than find?
I am sorry that my questions are poorly written and difficult to understand.
"Does find start computing at the moment when all the elements of x are given, rather than at the moment when any element of x is given"
Regarding the above question...
In this case, we run Simulink and consider the data to be acquired in real time as x.
In this case, does find calculate the value of x in real time?
Or does it start calculating after the Simulink simulation is finished and all the data for x is available?
As for the array example, here's what the workspace looks like after a Simulink simulation.
It may be difficult to understand...

サインインしてコメントする。

回答 (1 件)

Wan Ji
Wan Ji 2021 年 8 月 23 日
Find is not at all faster than logical inices.
IF you know how to use logical indices to get elements from matrix. I believe you will like it.
A = [true, false, true, false]; % logical inices
B = [4,3,5,6];
B(A) % this gets the value in B corresponds to true element in A
Then
ans =
4 5
But find should have such a following process
p = find(A);
B(p)
Also,
ans =
4 5
Find sometimes can be implemented by
n = 1:1:length(A);
p = n(A)
Then
p =
1 3
  1 件のコメント
A
A 2021 年 8 月 23 日
Thank you for your answer, and thank you for writing the program that turns into find.
Also, I apologize for my bad way of asking the question, it is not so clear.
In this case, I think x is the data to be retrieved from the simulator in real time.
In this case, is it still possible to detect x greater than 10 with the program you taught me?
I would be glad if you could answer me again.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by