str2num not working on array

조회 수: 8 (최근 30일)
Nikolay N Valov
Nikolay N Valov 2019년 9월 18일
편집: Stephen23 2019년 9월 19일
So the main issue is that when I used inputdlg and put in my desired color, str2num does not read it. I have tried str2double which produces a NaN which makes sense. I am not sure how to circumvent this issue.
%initialize colors
Grey = [0.5 0.5 0.5];
Red = [1 0 0];
Blue = [ 0 1 0];
Green = [ 0 0 1];
%prompt details of simulation
screenXpixels = 1920;
screenYpixels = 1080;
baseRect = [0 0 200 200];
prompt = {'Enter Arc Color (Grey, Red, Green, Blue):','Enter Arc Radius:','Enter Arc Angle','Enter amplitude constant:','Enter Frequency of Oscillation'};
dlgtitle = 'OscillatingDotDemo';
answer = inputdlg(prompt,dlgtitle);
arcColor = str2num(answer{1,1});
...
So when I run this, it returns an empty array.
  댓글 수: 1
Adam
Adam 2019년 9월 18일
str2num will convert e.g. '7' (char) to 7 (double), it doesn't have magic properties to interpret anything beyond that though, such as converting a colour string to a colour rgb or the index into a list of colour strings.

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

답변 (2개)

Star Strider
Star Strider 2019년 9월 18일
It returns an empty array because you apparently ask for a character array (for example ‘Red’) as the first input. That is not a number. If you enter a number instead of a color, it will return that number.

Stephen23
Stephen23 2019년 9월 19일
편집: Stephen23 2019년 9월 19일
It would be simpler to use a structure (in this example I entered "Red" into the dialog box):
>> S.red = [1,0,0];
>> S.green = [0,1,0];
>> S.blue = [0,0,1];
>> S.gray = [1,1,1]*0.5;
>> S.(lower(answer{1}))
ans =
1 0 0

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by