load mat table to gui table

hello, i need to load specific data from my mat file to gui table u can see mat file in the picture https://www.mathworks.com/matlabcentral/answers/uploaded_files/85736/image.png i need to show specific data,
load Data_Plat.mat
[row,~] = size(Database_All);
data2 = cell(row,4);
for n = 1:row
data2{n,1} = Database_All.Plat{n};
data2{n,2} = Database_All.Nama{n};
data2{n,3} = Database_All.Jurusan{n};
data2{n,4} = Database_All.Status{n};
end
set(handles.uitable1,'Data',data2);
this is my code for show all data from mat file in to gui table, the question is, how can i just show 1 data, for example, data with number plat DD6713MT

 Risposta accettata

Guillaume
Guillaume il 17 Ago 2017
Firstly, a much simpler version of your original code:
data_plat = load('Data_Plat.mat');
Database_All = data_plat.Database_All;
data2 = table2cell(Database_All(:, {'Plat', 'Nama', 'Jurusan', 'Status'}));
set(handles.uitable1, 'Data', data2);
If you want to filter your table to only include the rows that match a certain value, replace the : above by your filter, eg.:
data2 = table2cell(Database_All(strcmpi(Database_All.Plat, 'DD6713MT'), {'Plat', 'Nama', 'Jurusan', 'Status'}));

5 Commenti

Yusran Said
Yusran Said il 17 Ago 2017
thanks buddy, its work, but i have 1 more question, i create video license plate recognition, variable noplate replace 'DD6713MT', how can that table show more data if 2 or more car are succesfully recognition,?
Guillaume
Guillaume il 17 Ago 2017
Modificato: Guillaume il 17 Ago 2017
The code above will show all rows that match the filter, not just the first one.
If you want to filter several numbers at once use ismember instead of strcmp. Note that ismember does not have the case insensitive equivalent of strcmpi:
Database_All(ismember(Database_All.Plat, {'DD6713MT', 'AB1234CD'}), {'Plat', 'Nama', 'Jurusan', 'Status'}) %keep 'DD6713MT' and 'AB1234CD'
Yusran Said
Yusran Said il 17 Ago 2017
how about keep showing data in table even the car has pass away, are u have solution?
Guillaume
Guillaume il 17 Ago 2017
I have no idea what the above sentence is saying, particularly "the car has pass away"
Yusran Said
Yusran Said il 17 Ago 2017
sorry, my englhis so bad, it mean when my system succes read noplate from a car, then data in table is missing when car is gone, i want data in table still exist even noplate alrdy not show in system,

Accedi per commentare.

Più risposte (1)

Ilham Hardy
Ilham Hardy il 17 Ago 2017
If you are asking how to get the value of row 1 column 2 of your data2 cell, try
no_plat = data2{1,2}; % get row 1 column 2 value of data2

7 Commenti

Yusran Said
Yusran Said il 17 Ago 2017
not just for row 1, but it show if i type the number plat,
Ilham Hardy
Ilham Hardy il 17 Ago 2017
Modificato: Ilham Hardy il 17 Ago 2017
Can you elaborate more on your question?
What is your input and what do you expect to be the output?
If you want to search for relevant value of data2 based on the number plat:
First, search data2 for any desired keyword (in this case "DD6713MT"),
[rowid,colid] = find(ismember(data2,'DD6713MT'));
Then use rowid or colid to retrieve the information you want,
relevant_data = data2(rowid,:);
EDIT mistakenly put curly braces instead of normal braces.
Yusran Said
Yusran Said il 17 Ago 2017
the input is number of plat, n the output is data for that plat show in table
Yusran Said
Yusran Said il 17 Ago 2017
i still got error message from ur code, Error using cell/ismember (line 34) Input A of class cell and input B of class char must be cell arrays of strings, unless one is a string.
Error in contoh>pushbutton1_Callback (line 89) [rowid,colid] = find(ismember(data2,'DD6713MT'));
I just realized that data2 is in table format.
To search specific string in plat,
idx = find(strcmpi('DD6713MT',data2.Plat));
To return the values of relevant table index
relevant_data = data2(idx);
Be aware that relevant_data is still in table format.
Yusran Said
Yusran Said il 17 Ago 2017
its still erorr Attempt to reference field of non-structure array.
Error in contoh>pushbutton1_Callback (line 86) idx = find(strcmpi('DD6713MT',data2.Plat));
can u tell me how can i use that code, i put that code in inside for n try too in out side for, ty for u attention buddy
find is rarely needed. In particular:
idx = find(somelogicalexpression);
result = somevector(idx);
is the same as
result = somevector(somelogicalexpression);
The latter being faster as well.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by