Taking a string input and transferring it to a integer

2 ビュー (過去 30 日間)
Jacob Belouin
Jacob Belouin 2021 年 10 月 14 日
コメント済み: DGM 2021 年 10 月 15 日
I am trying to write a script to calculate the nominal kohms of a resistor. I need to create a menu of 10 colors and be able to assign those colors a number that I can use to create the final equasion. The numbers are integers ranging from 0 to 9 and there are three user selected inputs. Thanks in advance!
  1 件のコメント
DGM
DGM 2021 年 10 月 14 日
If you really insist on doing this with dialogs, you can use listdlg.
Otherwise, build a uifigure or something

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

採用された回答

DGM
DGM 2021 年 10 月 14 日
編集済み: DGM 2021 年 10 月 15 日
Meh.
numbands = 4;
colornames = {'black','brown','red','orange','yellow','green','blue','violet','gray','white','gold','silver'};
tolerancemap = [1 2 0.5 0.25 0.1 0.05 5 1]; % in percent
multmap = [0:7 -1 -2];
digits = zeros(1,numbands-2);
for vb = 1:numbands
ps = sprintf('Color Band %d',vb);
if vb == numbands
%tol = listdlg('promptstring',ps,'selectionmode','single','liststring',colornames([2 3 6:9 11 12]));
tol = menu(ps,colornames([2 3 6:9 11 12]));
elseif vb == numbands-1
%multiplier = listdlg('promptstring',ps,'selectionmode','single','liststring',colornames([1:8 11 12]));
multiplier = menu(ps,colornames([1:8 11 12]));
else
%digits(vb) = listdlg('promptstring',ps,'selectionmode','single','liststring',colornames);
digits(vb) = menu(ps,colornames);
end
end
value = str2double(sprintf('%d',digits-1)) * 10^multmap(multiplier);
tol = tolerancemap(tol);
if value >= 1E6
fprintf('The resistor value is %.2f Mohms, with a tolerance of %.2f%%\n',value/1E6,tol)
elseif value >= 1E3
fprintf('The resistor value is %.2f kohms, with a tolerance of %.2f%%\n',value/1E3,tol)
else
fprintf('The resistor value is %.2f ohms, with a tolerance of %.2f%%\n',value,tol)
end
Now you can add the tempco band too.
  5 件のコメント
Jacob Belouin
Jacob Belouin 2021 年 10 月 15 日
Understanding how you approached this now, its a way more efficent method but my Professor is telling me it has to use the menu command rather than listdlg. I dont need the whole answer, but is there a way to index arrays within the menu command?
DGM
DGM 2021 年 10 月 15 日
Augh. I didn't even think about literally using menu(). I never use interactive stuff, so i don't remember any of these things.
I edited to add example usage of menu in place of listdlg(). The indexing is basically the same.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by