String 在matlab中如何将字符串的值赋给另一个字符串
我有一个简单的问题。我想计算训练心率,我有一些值。RHR表示静息心率。INTEN表示fitnes水平,我给出的值为0.55,0.65,0.8,表示我编写的代码中的低、中、高适合度水平String 在matlab中如何将字符串的值赋给另一个字符串,string,matlab,math,if-statement,String,Matlab,Math,If Statement,我有一个简单的问题。我想计算训练心率,我有一些值。RHR表示静息心率。INTEN表示fitnes水平,我给出的值为0.55,0.65,0.8,表示我编写的代码中的低、中、高适合度水平 Gender=input('Please input your gender: '); Age=input('Please input your age: '); RHR=input('Please enter your resting heart rate: '); INTEN=input('Please
Gender=input('Please input your gender: ');
Age=input('Please input your age: ');
RHR=input('Please enter your resting heart rate: ');
INTEN=input('Please enter your fitness level(low,medium or high): ');
male=Male;
female=Female;
low=0.55;
medium=0.65;
high=0.8;
if INTEN==0.55
INTENT=0.55;
elseif INTENT==medium
INTENT=0.65;
else
INTENT=0.8;
end
if Gender==Male
THR=((220-Age)-RHR)*INTEN+RHR;
elseif Gender==Female
THR=((206-0.88*Age)-RHR)*INTEN+RHR;
end
disp('The recommended training heart rate is ',num2str(THR))
但它给出了错误原因?您的代码中有几个错误。值得注意的是,您正在使用保留操作将数字与字符串进行比较,这是不可能的。此外,变量
Gender
应该是一个字符串,但被当作一个数字处理,这很容易混淆。请务必查看用于比较字符串的函数。然后可以使用if/elseif
块
我建议使用提示符
来查询用户的信息。这样,所有内容都同时显示,在我看来,使用起来更简单
下面是带有注释的代码。如果有什么不清楚的,请告诉我
clc
clear
%// Set up dialog promt.
prompt = {'Enter your gender (male/female)','Enter your age:','Enter your resting heart rate: ','Enter your fitness level(low,medium or high): '};
dlg_title = 'Input';
num_lines = 1;
%// Default answers
def = {'male','30','120','medium'};
%// The answers are stored in the cell array called "answer". Its a 4x1
%// cell array containing ONLY STRINGS.
answer = inputdlg(prompt,dlg_title,num_lines,def);
%// Transform the strings into numbers that you can use.
Gender = answer{1};
Age = str2double(answer{2});
RHR = str2double(answer{3});
INTEN = answer{4};
%// A switch/case statement to convert INTEN into the number used for
%// the calculation
switch INTEN
case 'low'
INTEN=0.55;
case 'medium'
INTEN=0.65;
case 'high'
INTEN=0.8;
end
%// Use strcmp to compare strings.
if strcmp(Gender,'Male') || strcmp(Gender,'male')
THR=(220-Age-RHR)*INTEN+RHR;
elseif strcmp(Gender,'Female') || strcmp(Gender,'female')
THR=((06-0.88*Age)-RHR)*INTEN+RHR;
end
%// Create a string to display
DispMessage = sprintf('The recommended training heart rate is %0.2f\n',THR);
%// Create a message box to display the above string.
msgbox(DispMessage)
以下是提示窗口的外观:
并显示以下消息:
希望有帮助 Matlab无法计算出您作为输入给出的内容。正确的版本是:
Gender=input('Please input your gender: ','s');
此外,还有更多的错误在您的代码中,我建议您自己修复。我的不太高级的版本是:
Gender=input('Please input your gender: ','s');
Age=input('Please input your age: ');
RHR=input('Please enter your resting heart rate: ');
INTEN=input('Please enter your fitness level(low,medium or high): ','s');
if strcmp(INTEN,'low')
INTENT=0.55;
elseif strcmp(INTEN,'medium')
INTEN=0.65;
else
INTEN=0.8;
end
if strcmp(Gender,'male')|| strcmp(Gender,'Male')
THR=((220-Age)-RHR)*INTEN+RHR;
if strcmp(Gender,'female')|| strcmp(Gender,'Female')
THR=((206-0.88*Age)-RHR)*INTEN+RHR;
end
printres=['The recommended training heart rate is ',num2str(THR)];
disp(printres)
正确缩进您的代码,显示测试用例,并显示错误。什么是
男性
和女性
?我想给另一个变量,用输入(blablablabla,'s')
@TryHard来工作指定字符串输入-把这些话从我嘴里说出来!这远远超过了要求+我的荣幸!欢迎来到Matlab和strings的世界哈哈,玩得开心:)THR的结果不是真的,已经在男性案例中调试过了