different view in uitable app designer
Mostrar comentarios más antiguos
to sx the variable in workspace... (T= struct2table(Sis);)
to dx the variable in appdesigner as table ( app.UITable_mincap_2.Data=Table_DataAllSystem_Struct(app.Sis);)
in both =1 but only one line is written differently
12 comentarios
Taylor
el 3 de Nov. de 2023
Try using the class or eps functions to identify if the data point has the same precision.
Walter Roberson
el 3 de Nov. de 2023
I suspect that the value there is just slightly different than 1. You can pull the value out of the uitable and subtract 1 and see the difference
piero
el 4 de Nov. de 2023
Walter Roberson
el 4 de Nov. de 2023
I notice that your gg-1 results in a row vector. If you had extracted the data from the stored uitable then I would have expected a column vector.
For testing,
temp = app.UITable_mincap_2.Data;
mask = temp.NameOfVariableWithCurrencyInIt == 'USD';
subset = temp(mask,:);
usdvalue = subset.NameOfVariableWithNumericvalueInIt;
format long g
usdvalue - 1
piero
el 4 de Nov. de 2023
Walter Roberson
el 4 de Nov. de 2023
The information you have given us is that you have a table. You have not shown us the names of the variables in the table, and we have to assume that there might be more columns in the table than you showed us, so we do not know the column numbers involved.
So I put in names that are instructions about how you should change the code.
mask = temp.NameOfVariableWithCurrencyInIt == 'USD';
replace "NameOfVariableWithCurrencyInIt" with the name of the variable which holds the currency name information
usdvalue = subset.NameOfVariableWithNumericvalueInIt;
replace "NameOfVariableWithNumericvalueInIt" with the name of the variable that holds the number that you are showing us
For example maybe the code should look like
temp = app.UITable_mincap_2.Data;
mask = temp.Currency == 'USD';
subset = temp(mask,:);
usdvalue = subset.ExchangeRate;
format long g
usdvalue - 1
if the names of the two variables involved are Currency and ExchangeRate.
If the table happens to hold only the two columns you showed us then you can use
temp = app.UITable_mincap_2.Data;
mask = temp.(1) == 'USD';
subset = temp(mask,:);
usdvalue = subset.(2);
format long g
usdvalue - 1
piero
el 4 de Nov. de 2023
Walter Roberson
el 5 de Nov. de 2023
You mistyped. I used the variable named subset but the error message shows you accidently used the name subnet
Walter Roberson
el 5 de Nov. de 2023
if the data is not confidential then please store
Table_DataAllSystem_Struct(app.Sis)
into a variable, and save to a mat file and attach the mat file
piero
el 5 de Nov. de 2023
Respuestas (1)
Walter Roberson
el 5 de Nov. de 2023
0 votos
Experimentally:
It appears that the formatting of rows in the table works on some kind of buffer system having to do with which values are currently visible (the row is scrolled into range, even if the column itself is not.)
The rule appear to be that if anywhere in the current "buffer"-full the row contains a non-integer value, that the entire buffer-full for that column may be formatted as floating point. But only if the values have absolute value less than 1000: from 1000 upwards, the individual non-integer item will be formatted in scientific notation but the integer items in the buffer-full will be formatted as integers.
This is definitely not a behaviour I would have expected.
4 comentarios
piero
el 5 de Nov. de 2023
piero
el 5 de Nov. de 2023
Walter Roberson
el 5 de Nov. de 2023
You could consider using convertvars . However probably varfun with compose would be a better bet: if you just string() a column then it uses odd internal rules for the conversion, whereas if you invoke compose with an anonymous function you could specify the conversion format.
piero
el 6 de Nov. de 2023
Categorías
Más información sobre Develop Apps Using App Designer en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!