How to use array indexing with input dialog

2 ビュー (過去 30 日間)
Levente Gellért
Levente Gellért 2024 年 6 月 21 日
コメント済み: Pavan Sahith 2024 年 8 月 6 日
Dear MatLab Community, I am trying to use input dialog for indexing my array. The indexing is not a problem with numbers, however, when I try to give 1:end as default answer, the behavior of str2double I do not understand, and it does not work for me.
Any suggestions are highly appreciated.
Thank you
lg
e.g
a=1:100;
prompt = {'Enter timeframe:'};
dlg_title = 'Input';
num_lines = 1;
defaultans = {'1:end'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);
a=a(1,str2double(answer{1, 1}));
so, how to use 1:end or something:something in the input dialog to get the wished length of variable a?
  1 件のコメント
Tony
Tony 2024 年 6 月 21 日
I think it would help to give more details, such as some example lines of code

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

採用された回答

Pavan Sahith
Pavan Sahith 2024 年 6 月 21 日
編集済み: Pavan Sahith 2024 年 6 月 21 日
Hello Leventte,
I see that you are encountering issues when trying to accept expressions like 1:end from an input dialog in MATLAB.
The str2double function is designed to convert strings to numeric values and doesn't interpret MATLAB expressions like 1:end. To handle this, you can use eval to evaluate the input string as a MATLAB expression.
I assume your usecase is to fetch array indices from the input dialog , so you can refer to this sample code to understand the usage of eval
a = 1:100;
prompt = {'Enter timeframe:'};
dlg_title = 'Input';
num_lines = 1;
defaultans = {'1:end'};
answer = inputdlg(prompt, dlg_title, num_lines, defaultans);
% Check if the user provided an input
if ~isempty(answer)
try
% Evaluate the indexing expression
indexExpression = answer{1};
index = eval(['a(' indexExpression ')']);
disp('Indexed values:');
disp(index);
catch ME
% Handle any errors that occur during evaluation
disp('Error evaluating indexing expression:');
disp(ME.message);
end
else
disp('No input provided.');
end
you can refer to the following MathWorks documentation to know more about
Hope this helps you getting started
  2 件のコメント
Ganesh
Ganesh 2024 年 6 月 21 日
Pavan Sahith
Pavan Sahith 2024 年 8 月 6 日
yeah true, using eval in MATLAB can pose significant security risks, especially when dealing with untrusted input.
To mitigate these risks, one of the way is to combine try-catch blocks with input validation, as demonstrated in the code above.
Additionally, you can explore safer alternatives to eval.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品


リリース

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by