# How do I design the structure and get the element according to its corresponding index?

조회 수: 1 (최근 30일)
Linjun He 2019년 1월 28일
댓글: Linjun He 2019년 2월 15일
I want to get the value of N and M after giving two index variable k and g, as shown in the figure. (k is a number and g is a string)
For example:
k=get_k();
g=get_g();
if k == 1
N=92;
if g == 'cc'
M=300;
end
end
I tried to use cell to struct a "table",
where the first column is possible values of k,
the second column is the corresponding values of N,
and the third column is a cell contains information about g and its corresponding values of M:
Struct = {1,92,{'a',999;'cc',555;'de',44};...
2,61,{'a',666;'cc',33;'de',777};...
3,54,{'a',105;'cc',300;'de',46};...
6,106,{'a',55;'cc',666;'de',33};...
10,23,{'a',88;'cc',44;'de',111}}
I want to get the values of N and M using g and k.
My idea is to find the position of the k (i.e., row index of the first column in Struct) and then we can get the value of N.
Also, for the third column (i.e., the corresponding cell) in the same row, if we can find the position of g in that cell, we can get the value of M.
But I don't know how to get these two position.

댓글을 달려면 로그인하십시오.

### 채택된 답변

Munish Raj 2019년 2월 8일
편집: Munish Raj 2019년 2월 8일
I understand that you want to access the values of N, M using k, g as your indices.
You can exploit MATLAB’s logical indexing for this application.
The Structure definition is right on track for this purpose.
Assuming you have defined the structure in your question accurately, first column is k, second column is N, followed by a cell array with g, M.
The following code might be helpful
Struct = {1,92,{'a',999;'cc',555;'de',44};...
2,61,{'a',666;'cc',33;'de',777};...
3,54,{'a',105;'cc',300;'de',46};...
6,106,{'a',55;'cc',666;'de',33};...
10,23,{'a',88;'cc',44;'de',111}}
%Structure is defined
%define the variables g and k
g=6;
k='a';
cellArray=Struct{cell2mat(Struct(:,1))==k,3}; %spotting the corresponding cell array
logicalCellArray=strcmp(cellArray,'de'); %converting the cellArray to a Logical table
M=y{logicalCellArray,2}; %obtaining the value of M
N=Struct{cell2mat(Struct(:,1))==k,2} %Obtaining the value of N
This can be consized to 2 lines of code, but this code if for your understanding of the algorithm.
Munish Raj
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
Linjun He 2019년 2월 15일
Thank you!

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by