필터 지우기
필터 지우기

In App Designer: put new data into a (ui)table

조회 수: 13 (최근 30일)
Gavin
Gavin 2024년 7월 27일
편집: Adam Danz 2024년 8월 9일
This should be easy... Data comes in from a serial device consisting of a character and a number (time in msec) and I want to insert it into a table on screen.
I've got my serial callback working (after much effort) and I thought the next step would be easier. I have created a uitable that is displayed on the screen. Empty at first, called ResultsTable and thus referred to as app.ResultsTable with 2 columns named 'Event' and 'Time'. Everything else about the table is defaulted.
The app.ResultsTable.Data is initially [ ] as expected and as each bit of info comes in I want to add it to the table. Serial callback parsed the input into PType (a character) and PTime (uint32) so why does
app.ResultsTable.Data(app.NextTrial,'Event') = char(PType);
app.ResultsTable.Data(app.NextTrial,'Time') = PData;
Give me multiple columns where the number of columns is the ascii value of the character? If PType is 'A' I get 64 zeros and then a 65. I've tried various combinations of [ PType PData ] ( etc.) { another attempt }. All kinds of complicated merging of multiple tables is described in help but not simply putting new data into a new table within App Designer code (which has to be different than MatLab of course)
And after I get that first row in, I sure hope I can keep adding rows (app.NextTrial is the row index of course) for as long as I have enough memory (maybe 1000 rows?), that I can later export to an excel file or .CSV.
Thanks for the help for an old time C coder new to Matlab.
  댓글 수: 4
Mario Malic
Mario Malic 2024년 7월 28일
app.ResultsTable.Data(end+1,:) = [PType,PData];
This is one of the first thing you learn, when you learn MATLAB. It wouldn't hurt if you went over MATLAB Onramp quickly, takes 30-60 mins IIRC.
Gavin
Gavin 2024년 7월 29일
i thought I'd go ahead and do the course but I got this:
Course Overview >Course Overview
HTTP ERROR 431 Request Header Fields Too Large
URI:/R2024a/videoPage.html?caption=on&lang=en&videoIdUrl=6084985398001&isLocalized=false&volume=1&play=false&darkMode=falseSTATUS:431MESSAGE:Request Header Fields Too Large

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

채택된 답변

Mario Malic
Mario Malic 2024년 7월 27일
Hi Gavin,
Hopefully, I understood the question and here's an example code that could help.
hFig = uifigure();
t = uitable("Parent", hFig);
pType = 'a';
pData = 1;
pType = convertCharsToStrings(pType); % uitable supports string arrays, not char arrays
for i = 1 : 5
if isempty(t.Data) % Init (sets the var types too)
t.Data = [pType, pData];
else
t.Data(end + 1, :) = [pType, pData]; % adding data to the next row
end
pData = pData + 1;
end
  댓글 수: 1
Gavin
Gavin 2024년 7월 29일
Thank you, that took care of it. The isempty() part is necessary or it puts the first one in as NAN. If one isn't changing types it's not necessary.
I come from the world of C, C++ and other strongly typed languages. MatLab's weak typing causes more troubles than is solves IMO.

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

추가 답변 (0개)

카테고리

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

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by