我正在使用matlab制作计算器,我想从editbox获取最后一个输入数字,并在按下sin按钮时将其放入sind()括号中。怎么做?我搜索了几个小时,但没有找到任何东西。
现在我的sin按钮代码如下:
% --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
inpfieldtxt = get(handles.edit1,'string');
if(strcmp(inpfieldtxt,'0.')==1)
set(handles.edit1,'String','sind(');
else
inpfieldtxt=strcat(inpfieldtxt,'sind(');
set(handles.edit1,'String',inpfieldtxt)
end
它只是插入'sind('到编辑框,然后我手动需要输入数字和右括号')'。
我想让这个按钮作为Windows 7计算器的sin按钮做出反应。它也会获得最后一个数字并将其置于罪中(此处)。
我知道了! 这是解决方案:
% --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
inpfieldtxt = get(handles.edit1,'string');
if(strcmp(inpfieldtxt,'0.')==1)
set(handles.edit1,'String','sind(');
else
isNumber = (inpfieldtxt >= '0') & (inpfieldtxt <= '9');
i=length(inpfieldtxt);
while (i > 0) && (isNumber(i))
if isNumber(i)
i = i-1;
end
end
lastnmb = inpfieldtxt(i+1:end);
inpfieldtxt = inpfieldtxt(1:i);
set(handles.edit1,'String',[inpfieldtxt,'sind(',lastnmb,')']);
end
非常感谢您的帮助!
答案 0 :(得分:0)
ivedlauktxt(end)
给出最后一个字符
第二个想法,你可能想看看str2num()
编辑:
鉴于您正在寻找的具体事情,这可能是一种方法:
isNumber = (ivedlauktxt >= '0') & (ivedlauktxt <= '9')
i=length(ivedlauktxt); %Initialize loop
while i>0 && (isNumber(i))
if isNumber(i)
i=i-1;
end
end
str2num( ivedlauktxt(i+1:end) )
没有测试它,但它应该让你到那里!