I wrote an app for particle tracking. Data is stored in a Excel datasheet.
I would like to create a "calculate Diffusion Coefficient" button and the Row 1, Column 14 data will displayed on the diffusion Coefficient edit field. However, when I used the following code, it show the "too many output arguments" and I searched and still don't know how to solve it. Could anyone helped me solve this please. Appreciate it a lot.
% Button pushed function: CalculateDiffusioncoefficientButton
function CalculateDiffusioncoefficientButtonPushed(app, event)
dataset = xlsread('modifiedDataset.xlsx','Sheet1')
app.DiffusionCoefficientmm2sEditFieldValueChanged.Value = dataset(1,14)
I even tried add a private property but it still doesn't work.
% Button pushed function: CalculateDiffusioncoefficientButton
function CalculateDiffusioncoefficientButtonPushed(app, event)
dataset = xlsread('modifiedDataset.xlsx','Sheet1')
app.DifCoeNum = dataset(1,14)
app.DiffusionCoefficientmm2sEditFieldValueChanged.Value = app.DifCoeNum

7 件のコメント

dpb
dpb 2022 年 7 月 27 日
編集済み: dpb 2022 年 7 月 27 日
Show us the whole error in context...we can't tell what it thnks is the offending code.
Although I notice you're missing the trailing semicolons on the assignment statements which try to echo output -- I dunno off top of head if that bothers the app designer or not since there isn't a console to which to echo the output, but I'd try fixing that firstest...
Chun Fai Leung
Chun Fai Leung 2022 年 7 月 28 日
編集済み: Chun Fai Leung 2022 年 7 月 28 日
Thank you Sir. When I run the app, clicking the calculate diffusion coefficient button, it only showed up a warning with "too many output arguments". Is there anywhere else I could check into for more detailed errors?
I could send you the whole app as well if you need. Please see the attached app. Thank you again.
dpb
dpb 2022 年 7 月 28 日
How about pasting image of the screen with the error message, then? It's got to highlight the offending line somehow...
It's not convenient to load another app at the moment with present state of workspace; alternatively, comment out the code inside the function to nothing and try again; then add code back one step at a time.
I might even just delete the callback function entirely and start over with redefining it from scratch.
I do notice there's a red underline under both xlsread and value above; what does
which -all xlsread
which -all value
whos xlsread
whos value
return? Any chance have accidentally renamed xlsread to be a variable or the like???
Dennis
Dennis 2022 年 7 月 28 日
If you want to set the value of your edit field it should be
app.DiffusionCoefficientmm2sEditField.Value = app.DifCoeNum;
Not sure if it resolves the error.
dpb
dpb 2022 年 7 月 28 日
value=app.DiffusionCoefficientmm2sEditField.Value;
should just retrieve the current content of the edit field -- of course, value at this point is only a local variable within the callback function that doesn't get used or saved nor is it visible anywhere else, but just looking I don't see why it should be a syntax error.
Probably creating the global shared variable and then referring to
app.value
would be appropriate assuming the value is going to be needed somewhere else besides in whatever else this callback was going to do with it.
I dunno, I've seen some pretty picky issues inside appdesigner on syntax, though, now that think about it -- it definitely gets all bent out of shape with non-referenced variables, although I don't recall it being more than nagging and excessive wanting to replace by ~ while one is still under development/testing.
Dennis
Dennis 2022 年 7 月 28 日
value=app.DiffusionCoefficientmm2sEditField.Value;
That line is created by appdesigner automatically when you add a ValueChanged callback to an editfield. But you are correct that in this case the line does nothing and value is not getting used or stored.
Chun Fai Leung
Chun Fai Leung 2022 年 7 月 28 日
Thank Sir dpb for the help as well, problem solved. I input the incorrect name of edit field, how dumb I am. Sorry.

サインインしてコメントする。

 採用された回答

Dennis
Dennis 2022 年 7 月 28 日

0 投票

There are 2 errors in this line:
app.DiffusionCoefficientmm2sEditFieldValueChanged.Value = app.DifCoeNum
First you got the name of your edit field and its callback mixed up.
Second your edit field is not numeric, so you need to convert app.DifCoeNum to a string.
This should work:
app.DiffusionCoefficientmm2sEditField.Value =num2str(app.DifCoeNum);

1 件のコメント

Chun Fai Leung
Chun Fai Leung 2022 年 7 月 28 日
Oh Sir. Thank you so much. I did try using num2str before but it still pop up the "too many output arguments".
However, the main problem is that I input the incorrect edit field name. After I changed it back to the correct name of edit field, it works perfect.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeDevelop Apps Using App Designer についてさらに検索

製品

リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by