symbol ={'R0';'R1';'R2';'R3';'R4';'R5';'R6';'R7';'R8';'R9';'R10';'R11';'R12';'R13';'R14';'R15';'SCREEN';'KBD';'SP';'LCL';'ARG';'THIS';'THAT'};
Address={'0';'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16384';'24576';'0';'1';'2';'3';'4'};
symboltable=table(symbol,Address);
k6 = isfield(symboltable.symbol,trim_Ainstruction)
where 'trim_Ainstruction' is a char ..and we are assigning trim_Ainstruction as screen(in char data type)
while am trying to search 'screen' in table 'symboltable' using above code, its returns zero eventhough the specific string is in the table. can anyone help me?

Réponses (1)

You are not using isfield correctly. This function is for searching structure array fieldnames, not character vectors.
Consider looking into strcmp or ismember. For example
symbol ={'R0';'R1';'R2';'R3';'R4';'R5';'R6';'R7';'R8';'R9';'R10';'R11';'R12';'R13';'R14';'R15';'SCREEN';'KBD';'SP';'LCL';'ARG';'THIS';'THAT'};
Address={'0';'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16384';'24576';'0';'1';'2';'3';'4'};
symboltable=table(symbol,Address);
ismember('R6',symboltable.symbol)
ans = logical
1

5 commentaires

Stephen23
Stephen23 le 13 Jan 2022
Modifié(e) : Stephen23 le 13 Jan 2022
It is very odd that ISFIELD does not throw an error for data types that do not have fields:
isfield({},'a')
ans = logical
0
isfield([],'a')
ans = logical
0
I would not have expected that... a descriptive error message would be more useful, IMHO.
VISHNU DIVAKARAN PILLAI
VISHNU DIVAKARAN PILLAI le 13 Jan 2022
so can we use that result for if condition, i think it wil show an error.i need to use the result for if condition.
VISHNU DIVAKARAN PILLAI
VISHNU DIVAKARAN PILLAI le 13 Jan 2022
ismember is working but its showing as array.. i need to use the result for if condition.. can u pls suggst?
Cris LaPierre
Cris LaPierre le 13 Jan 2022
Modifié(e) : Cris LaPierre le 13 Jan 2022
Yes, logical results can be used for your if condition. That's new information that was not in the original question. What is the condition you want to have?
symbol ={'R0';'R1';'R2';'R3';'R4';'R5';'R6';'R7';'R8';'R9';'R10';'R11';'R12';'R13';'R14';'R15';'SCREEN';'KBD';'SP';'LCL';'ARG';'THIS';'THAT'};
Address={'0';'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16384';'24576';'0';'1';'2';'3';'4'};
symboltable=table(symbol,Address);
isfound = ismember('R6',symboltable.symbol);
if isfound
disp('Value found in symbol')
end
Value found in symbol
As you can see if the example above, the code you have provided here returns a single value. Share the code you are running.

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by