필터 지우기
필터 지우기

Can I use a variable name to make logical comparison?

조회 수: 10 (최근 30일)
Snr Jhay
Snr Jhay 2021년 11월 15일
댓글: Snr Jhay 2021년 11월 19일
month = input('Enter the month: ');
months = [January, February, March, April, May, June, July, August, September, October, November, December];
k = find(months==month)
I have created the above array, months, and assigned each month to the number of days in it. I have asked a user to enter a month(in words). Now i want to compare the month the user entered with any of the months in the months array by using the find function, but it always compares the values withing the various months and not the variable names. Is there a workaround for this?
Thank you
  댓글 수: 4
Image Analyst
Image Analyst 2021년 11월 15일
Variable names can contain letters and numbers. Use whatever letters and numbers make for a descriptive variable name. Single letters are usually not descriptive except for really simple cases like x and y and k for a loop iterator.
You never defined January in your code so it doesn't know what that is. You need to assign it to a string or number
January = 'January'; % Character array.
January = "January"; % String Variable.
January = 1; % Double/number.
You can use numbers instead of strings if you want -- your choice.
By the way, see my answer below, and the 2 other answers.
Snr Jhay
Snr Jhay 2021년 11월 16일
Okay. I'm getting that.
Thanks a lot

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

답변 (3개)

Chunru
Chunru 2021년 11월 15일
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
%month = input('Enter the month: ');
month = "May"
month = "May"
k = find(months==month)
k = 5
  댓글 수: 5
Stephen23
Stephen23 2021년 11월 15일
편집: Stephen23 2021년 11월 15일
@Snr Jhay: using lots of separate variables is entirely the wrong approach if you want to write simple, efficient code.
MATLAB is designed for efficient processing of data in arrays, and that is how you should store your data too.
Snr Jhay
Snr Jhay 2021년 11월 16일
Nice advice. I'm gonna read more on that, with the efficiency and data storage. Thanks for the time. Hopefully i dont give up on Matlab

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


Rik
Rik 2021년 11월 15일
You could use the string datatype (as Chunru suggested), or use a cellstr (a cell array of char vectors):
%month = input('Enter the month: ','s');
% ^^^^
% don't forget this
month='May';
months = {'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'};
k = find(ismember(months,month))
k = 5
  댓글 수: 3
Rik
Rik 2021년 11월 15일
They will not, nor should they. You should separate data from metadata. What do these arrays store? If the store average temperature per day, wouldn't MeanTemp make more sense as a variable name than January?
Snr Jhay
Snr Jhay 2021년 11월 16일
They store the numbers of days in the specified month.

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


Image Analyst
Image Analyst 2021년 11월 15일
You don't need find().
Simply use ismember():
%month = input('Enter the month: ','s');
% ^^^^
% don't forget this
month='May';
months = {'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'};
[~, index] = ismember(month, months)
index = 5
  댓글 수: 7
Stephen23
Stephen23 2021년 11월 19일
"so the truth is I'm learning Matlab using Matlab For Engineers by Chapman"
Over the years I have read several books about "learning MATLAB" and without exception they contained outdated, incorrect or misleading advice, and used terminology inconsistent with the MATLAB documentation.
Snr Jhay
Snr Jhay 2021년 11월 19일
Okay. I will use the link you just sent to further enhance my studies.
Thank you very much

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

카테고리

Help CenterFile Exchange에서 Language Fundamentals에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by