【正文】
h,39。type39。,39。axes39。)。 elseif strcmp(typ, 39。axes39。) h = get(handle,39。parent39。)。 ax = handle。 elseif strcmp( get(get(handle,39。parent39。), 39。type39。), 39。axes39。 ) ax = get(handle,39。parent39。)。 h = get(ax,39。parent39。)。 end=========================================================1在GUI界面的打開(kāi)按鈕中,如何對(duì)文件進(jìn)行操作我要的數(shù)據(jù)是保存在一組具有相同前綴名*.dat,*.atr,*.hea中的。只有3個(gè)同時(shí)被使用,數(shù)據(jù)才能起作用。我想做一個(gè)的界面,一個(gè)最基本的功能就是“打開(kāi)”按鈕,它的作用是打開(kāi)*.dat文件,并匹配和*.dat具有相同文件名的另外兩個(gè)文件:*.atr,*.hea。實(shí)際上就是我表面上只是打開(kāi)了那個(gè)*.dat文件,但程序會(huì)搜索和*.dat具有相同文件名的另外兩個(gè)文件:*.atr,*.hea,一起打開(kāi),并把它們保存在3個(gè)變量里。現(xiàn)在的困難是如何在同一個(gè)文件夾里搜索到另外兩個(gè)文件?解決方法:給你個(gè)例子:fileDir=39。C:\Users\liuhuanjin\Documents\MATLAB39。fileName=39。39。files = dir(fileDir)。 %列出文件夾中的所有文件,保存到files結(jié)構(gòu)中 for i=1:length(files) if (strcmp(files(i).name,fileName)==1)% 查找想要的文件 fullFileName=[fileDir 39。\39。 fileName]。 disp(39。Find the file!39。)。 return end。end。disp(39。Can not find such file39。)。%[filename,pathname]=uigetfile(... {39。*.bmp。*.jpg。*.png。*.jpeg。*.tif39。,39。文件類(lèi)型(*.bmp,*.jpg,*.png,*.jpeg,*.tif)39。... 39。*.*39。, 39。所有文件(*.*)39。},... 39。Pick an image39。)。axes()。%用axes命令設(shè)定當(dāng)前操作的坐標(biāo)軸為axes1。fpath=[pathname filename]。%將文件名和目錄名組成一個(gè)完整的路徑。I=imread(fpath)。imshow(I)。%用imread讀入圖片保存變量為I,并且imshow在axes1軸上顯示set(,39。Enable39。,39。on39。)。%使其在打開(kāi)命令使用后可使用,放在打開(kāi)函數(shù)最后。%。file=ls([pathname, 39。\*.txt39。])。%文件名for i = 1 : size(file, 1) filepath{i} = strcat(pathname, 39。\39。, file(i, :))。 %合并路徑及文件名endfor m = 1 : length(filepath) a=importdata(filepath{i},39。\t39。)。 for i=1:(size(a,1)2)a{i}(~((a{i}=39。039。 amp。 a{i}=39。939。) | a{i}==39。.39。|a{i}==39。39。|a{i}==39。:39。))=39。 39。end[filename1,pathname]=uigetfile(... {39。*.dat39。,39。Data Files(*.dat)39。... 39。*.*39。,39。All Files(*.*)39。},... 39。Pick an dat39。)。name=filename1(1:end4)。filename2=[name,39。*.atr39。]。filename2=[name,39。*.hea39。]。data1=load([pathname,filename1])。data2=load([pathname,filename2])。data3=load([pathname,filename3])。這樣就可以了,剩下的你自己寫(xiě)1Matlab不同控件之間的數(shù)據(jù)傳遞問(wèn)題本人做了一4個(gè)button用于打開(kāi)4個(gè)矩陣文件,第五個(gè)button用于把前四個(gè)button的數(shù)據(jù)寫(xiě)到一個(gè)矩陣中去。本人想實(shí)現(xiàn)若只輸入前3個(gè)button的數(shù)據(jù),第4個(gè)button不導(dǎo)入任何數(shù)據(jù),如何實(shí)現(xiàn)第5個(gè)button能把前3個(gè)button的數(shù)據(jù)也寫(xiě)到一個(gè)矩陣中去。以下是本人編的的條件語(yǔ)句,不好使?。≌f(shuō)明一下數(shù)據(jù)傳遞用的guidata型。a=。b=。c=。d=。if isempty(d) A=[a b c]。elseA=[a b c d]。解決方法:按照你的描述,我編了個(gè)程序,可以實(shí)現(xiàn)你所說(shuō)的功能。首先在Openingf中初始化矩陣d為空矩陣;然后在各按鈕的回調(diào)函數(shù)中加入形如如下格式的語(yǔ)句: =rand(3,3)。 % 隨機(jī)生成3*3矩陣做測(cè)試 guidata(hObject,handles)。 最后在第5個(gè)按鈕的回調(diào)函數(shù)內(nèi)加入如下代碼:a=。b=。c=。d=。if isempty(d) A=[a b c]。 else A=[a b c d]。end當(dāng)不按按鈕5時(shí),d為空矩陣,則輸出前三個(gè)矩陣;當(dāng)按了按鈕5時(shí),d被賦值,不為空,則輸出a,b,c,d四個(gè)矩陣。1在edit box里輸入相關(guān)數(shù)據(jù)后,直接按回車(chē)鍵,不用鼠標(biāo)點(diǎn)擊pushbutton 就可以直接執(zhí)行請(qǐng)教:讓push button執(zhí)行一個(gè)程序的simulation, 在界面得所有edit box里輸入相關(guān)數(shù)據(jù)后,想要直接按回車(chē)鍵 不用鼠標(biāo)點(diǎn)擊pushbutton 就可以直接執(zhí)行, 該怎么編輯push button的callback呀解決方法:(1)設(shè)置控件的tab order。程序運(yùn)行后,用tab鍵選定pushbutton,直接按空格鍵,不用點(diǎn)擊pushbutton就可以;(2)在最后的edit控件的callback函數(shù)內(nèi)加入執(zhí)行simulation的命令,最后的edit控件輸入完成后直接按39?;剀?chē)鍵39。就可以運(yùn)行simulation;或者調(diào)用button按鈕的callback也行。(3)在KeypressF函數(shù)內(nèi)加入相應(yīng)的命令。這個(gè)方法還是需要在edit內(nèi)輸入完數(shù)據(jù)后,在figure的空白處點(diǎn)一下鼠標(biāo),然后按鍵盤(pán)的任意鍵才行。 根據(jù)你的意思,你是不想用鼠標(biāo)點(diǎn)button按鈕,按enter就執(zhí)行button內(nèi)的代碼,那第(2)種方法是可行的。以上方法經(jīng)實(shí)際測(cè)試,均是可行的!191 GUI使用editbox輸入數(shù)據(jù)后如何自動(dòng)清除數(shù)據(jù)我編了一個(gè)GUI, 使用的時(shí)候會(huì)需要輸入一些數(shù)據(jù), 我放了一個(gè)editbox和一個(gè)按鈕Enter, 用的時(shí)候就是在editbox里面輸入數(shù)據(jù), 然后按Enter確認(rèn). 現(xiàn)在問(wèn)題就是輸入好數(shù)據(jù),按了Enter之后, editbox里面的數(shù)據(jù)還在, 下次再輸入的時(shí)候就要先刪除后再輸入, 我想問(wèn)一下有沒(méi)有什么辦法能夠讓按了Enter鍵之后, editbox里面的數(shù)據(jù)就會(huì)清除掉, 這樣下次再輸入的時(shí)候就不用先刪除了。在enter按鈕的回調(diào)函數(shù)里加入如下代碼處理即可:value1=get(,39。string39。)。%先取得編輯框的數(shù)據(jù)set(,39。string39。,39。39。)。%再把編輯框清空在GUI中,計(jì)算結(jié)果怎么用excel來(lái)保存到指定的文件夾中問(wèn)題:GUI設(shè)計(jì)的結(jié)果怎么用EXCEL來(lái)保存到指定的文件夾。說(shuō)明:根據(jù)論壇上的例子做了個(gè)GUI界面,結(jié)果可以保存到EXCEL里面,但保存的路徑只能是在當(dāng)前文件夾,我希望保存到指定的文件夾,怎樣才能把數(shù)據(jù)結(jié)果以EXCEL表格的形式保存到指定的文件夾?高手指點(diǎn)一下,不勝感激。解決方法:例如:要把‘第一行’、‘第二行’、‘第三行’分別添加到excel表格的三列可開(kāi)頭,用以下命令:M={‘第一行’,’ 第二行’,’ 第三行’}。%定義為cell類(lèi)型xlswrite(‘’,M)。結(jié)果:a=get(,39。string39。)。b=get(,39。string39。)。m={a。b}。[filename, pathname] = uiputfile(39。*.xls39。, 39。保存計(jì)算結(jié)果39。)。if filename==0 % 取消return。endoldpath=cd。cd(pathname)。[pathstr,filename]=fileparts(filename)。xlswrite(filename,{39。X取值:39。},39。sheet139。,39。A139。)。xlswrite(filename,{39。y=x^3+x^2+x的結(jié)果:39。},39。sheet139。,39。A239。)。xlswrite(filename,m,39。sheet139。,39。B1:B239。)。cd(oldpath)。a=get(,39。string39。)。b=get(,39。string39。)。m={a。b}。[filename, pathname] = uiputfile(39。*.xls39。, 39。保存計(jì)算結(jié)果39。)。if filename==0 % 取消 return。end[pathstr,filename]=fileparts(filename)。xlswrite(filename,{39。X取值:39。},39。sheet139。,39。A139。)。xlswrite(filename,{39。y=x^3+x^2+x的結(jié)果:39。},39。sheet139。,39。A239。)。xlswrite(filename,m,39。sheet139。,39。B1:B239。)。2如何得到popupmenu選項(xiàng)中最后一個(gè)字符串的VALUE值在popupmenu下拉菜單中有許多行內(nèi)容,如何得到最后一行的value值?解決方法:在popupmenu的回調(diào)函數(shù)中加入代碼如下:function popupmenu1_Callback(hObject, eventdata, handles)list_menu=get(,39。String39。)。 %先得到存放菜單項(xiàng)的cell列表string=list_menu{end}。 %得到最后菜單項(xiàng)的字符串value=length(list_menu)。%得到最后菜單項(xiàng)的Value值disp(value)?;蛘哂靡韵麓a:str=get(,39。string39。)。s=str(end) %最后一行內(nèi)容val=size(str,1)%最后一行所處行數(shù)2回調(diào)函數(shù)互相調(diào)用的問(wèn)題想在一個(gè)按鈕的回調(diào)函數(shù)下運(yùn)行另一個(gè)回調(diào)函數(shù),句子該如何寫(xiě)?就像如下調(diào)用就可以?;卣{(diào)函數(shù)沒(méi)有什么特別的,也是普通的函數(shù),只不過(guò)它是響應(yīng)控件的操作的。解決方法:function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to mybutton (see GCBO)% eventdatareserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) pushbutton2_Callback(hObject, eventdata, handles)。% Executes during object creation, after setting all properties.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to mybutton (see GCBO)% eventdatareserved to be defined in a future version of MATLAB% handles empty handles not created until after all CreateFs called222string和number相互轉(zhuǎn)換的問(wèn)題t2_1=get(,39。String39。)t2_2=get(,39。String39。)ua=get(,39。String39。)phi=get(,39。String39。)a_bmax=phi*s_zhidong=(t2_1+t2_2/2)*ua/+ua^2/set(,39。String39。,num2str(s_zhidong))。問(wèn)題出現(xiàn)在:a_bmax=phi*,因?yàn)閜hi=get(,39。String39。)是從edit控件中返回字符串,必須用str2double或str2num轉(zhuǎn)換為數(shù)字類(lèi)型后才能使用。2這樣的功能的pushbutton的callback怎么寫(xiě)呀,謝謝了pushbutton實(shí)現(xiàn)下面的功能:先判斷edit(3個(gè))是不是為空,接著讀取popupmenu中的信息(2個(gè)選項(xiàng)),當(dāng)兩者都符合要求的時(shí)候執(zhí)行相關(guān)的命令這樣的pushbutton的callback怎么寫(xiě)呀,我寫(xiě)的a=get(,39。string39。)。b=get(,39。string39。)。c=get(,39。string39。)。if isempty(a) || isempt