0

我正在用 matlab 制作计算器,当按下 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 按钮做出反应。它还获取最后一个数字并将其放入 sin(here)。

我得到了它!这是解决方案:

% --- 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

非常感谢您的帮助!

4

1 回答 1

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) ) 

没有测试它,但它应该能让你到达那里!

于 2012-11-12T16:30:35.890 回答