2013-05-17 67 views
1

我完全是新的matlab,這是我的第一個問題。 我發現像這樣的程序MATLAB錯誤,而轉換str2num

x = inputdlg('foo'); 
x = str2num(x{1}) 

,並試圖做出一些GUI自話,就把這條線回調按鈕的功能:

x=get(handles.edit1, 'String') 
x=str2num(x{1}) 

和它的作品,但我不能添加此之後具有不同可變

y=get(handles.edit2, 'String') 
y=str2num(y{1}) 

命令窗口同樣的事情所述

Cell contents reference from a non-cell array object. 

Error in regresilinear>pushbutton1_Callback (line 128) 
x=str2num(x{1}) 

Error in gui_mainfcn (line 96) 
     feval(varargin{:}); 

Error in regresilinear (line 42) 
    gui_mainfcn(gui_State, varargin{:}); 

Error in 
@(hObject,eventdata)regresilinear('pushbutton1_Callback',hObject,eventdata,guidata(hObject)) 


Error while evaluating uicontrol Callback 

我發現命令窗口的輸出在運行時不同,輸入不一樣。 當它得到了錯誤:

x = 

0 1 2 3 

時沒有(第一次)

x = 

    '0 1 2 3' 

它不給任何錯誤,如果我刪除str2num線。 我希望有人能幫助解決這個問題。

+0

我發現錯誤發生時,我將編輯1的字符串屬性從'編輯文本'更改爲'' –

回答

0

開始具有明確的工作區,並

x=get(handles.edit1, 'String'); 
x=str2num(x); 

或更好:

x=str2num(get(handles.edit1, 'String')); 

{}被用於訪問一個單元陣列中的元素。你可能試圖在一個字符串上使用它,這就是爲什麼你會得到這個錯誤。

+0

感謝HebeleHododo,我按照您的指示做了它。仍然不知道是什麼問題 –

+0

@VictorioPui那麼,它工作?如果是這樣,那可能是因爲'x'被定義爲工作空間中的單元陣列。 – HebeleHododo

+0

是的,現在,在啓動新的工作區並使用相同的代碼之後。 我發現編輯edit1字符串屬性導致str2num轉換錯誤 –