當前位置:首頁 » 編程軟體 » matlab編程界面

matlab編程界面

發布時間: 2023-06-06 09:02:38

㈠ 如何在matlab中建立一個簡單的圖形用戶界面

創建一個完整的Matlab/GUI步驟:
在MATLAB的命令窗口(Command Window)中運行guide命令,來打開GUIDE界面,如下:
然後,選擇空模板(Blang GUI),點擊OK,即可打開GUIDE的設計界面,如下:

點擊工具欄上的菜單編輯器(Menu Editor),打開菜單編輯器,如下:

在Menu Bar中新建一個菜單項,名字為「文件」,其他設置請看下圖:

在「文件」菜單下添加菜單項:「打開」,「保存」,「退出」。見下圖:

如果需要在菜單項「退出」上面添加一個分割線的話,選中「Separator above this
item」就行了。
保存我的界面為pjimage.fig. 保存完畢之後,會自動打開pjimage.m文件,而我們所有
的程序都是要寫在這個M 文件裡面的。在編程中,我們的每一個滑鼠動作都對應一個
Callback函數。那麼我們的菜單項也是如此的。
在界面上,單擊滑鼠右鍵選擇「Property Inspector」,即可打開屬性窗口。當我們點擊不
同的控制項時,其對應的屬性都會在這里顯示,我們可以進行修改。最主要的屬性莫過於Tag
屬性和String屬性。
設置當前Figure窗口的Tag屬性為:figure_pjimage,窗口的標題(Name屬性)為:圖像處
理實例。如下:

然後,點擊工具欄的保存按鈕。之後,點擊工具欄的運行按鈕(Run Figure)。注意,工具欄
的圖標都會有提示的,像運行按鈕的提示就是Run Figure. 我們會看到如下的界面:

那說明,我們保存的.fig 文件的目錄不是當前目錄,但是沒關系啊,我們只要點擊
「Change Directory」來改變當前目錄。當然,如果你想把當前目錄添加到MATLAB路徑也
可以,那就點擊「Add to Path」就OK了。我在這里推薦點擊「Change Directory」,因為
沒有什麼太大必要把其添加到MATLAB路徑中,一般是工具箱需要添加或者我們的函數或程序寫完了,而在MATLAB的命令
窗口找不到我們的函數的時候,我們可以將函數或程序所在的目錄添加到MATLAB路徑。
總之吧,點那個按鈕,要看個人的愛好了。不管點擊兩個按鈕的那一個按鈕,都會正確的運行程序的。
我們的程序運行時的樣子,是這樣的:

文件下面的菜單項和快捷鍵我們都能看到,但是我們沒有寫程序,所以就算點也沒有什麼
響應。還有如果不想設置快捷鍵,可以在Menu Editor中設置,只要把其選擇為Ctrl+none
就行了,如下:

這樣的話,保存項就沒有了快捷鍵了。我們可以通過上面的按鈕「View」來查看該菜單項的
響應函數,也就是Callback 函數。也可以在pjimage.m 中看,比如保存的Tag 屬性是
m_file_save,那麼它對應的Callback函數的名字就是m_file_save_Callback。依次類推了。
下面我們來寫打開菜單項的函數,要打開一個圖片,當然要用打開對話框了。在界面編程中,
打開對話框的函數是uigetfile. 關於它的詳細的說明用help uigetfile命令查看。下面
是打開菜單的響應函數:
[plain] view plain print?function m_file_open_Callback(hObject, eventdata, handles) [filename, pathname] = uigetfile( ... {'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.jpg, *.png, *.jpeg)'; ... '*.*', 'All Files (*.*)'}, ... 'Pick an image'); 保存.m文件,並運行程序。點擊「文件」下的「打開」,會打開如下的打開對話框:

選擇一個文件之後,程序中的filename就是你選擇的文件的文件名,pathname就是該文
件所在的目錄的路徑。比如: filename =5.jpg , pathname =C:\Documents and
Settings\Administrator\My Documents\。
那麼獲得路徑之後,我們要怎麼樣才能讀入和顯示一個圖片呢?讀入圖片可以用imread函
數,而顯示可以在一個坐標軸上。那麼我們需要在界面上畫上一個坐標軸,為了對比,我們
畫兩個坐標軸,一個顯示處理前,一個顯示處理後的。並且將處理前的坐標軸的Tag屬性改
為axes_src,處理後的坐標軸的Tag屬性為axes_dst。更改之後,保存。如下:

然後在m_file_open_Callback程序原來的基礎上,再添加如下的程序:
[plain] view plain print?axes(handles.axes_src);%用axes命令設定當前操作的坐標軸是axes_src fpath=[pathname filename];%將文件名和目錄名組合成一個完整的路徑 imshow(imread(fpath));%用imread讀入圖片,並用imshow在axes_src上顯示 運行程序,通過「打開」菜單項,打開一個圖片。效果如下:

那麼如何來保存一副圖片?用imwrite命令。但imwrite命令的第一個參數就是你讀入的圖片數據,也就是imread的返回值。這樣的話,我們就要
將m_file_open_Callback中的程序做一點小小的改動。將最後一句(imshow(imread(fpath))),更改為兩句,如下:
[plain] view plain print?img_src=imread(fpath);imshow(img_src); 不僅如此,我們的保存菜單的Callback函數,如何去獲得打開菜單的Callback函數下的img_src變數呢?這里就要將img_src來作為一個共享的數據。
許多界面編程的朋友,喜歡用global聲明。我個人不喜歡這樣用,因為有更好的方法。那就是用setappdata和getappdata兩個函數。我們可以為界
面上面的任何一個具有Tag屬性的控制項添加應用程序數據。當然我比較喜歡將這些共享的應用程序數據統一添加到Figure窗口上,因為這樣容易記,
如果一個控制項一個,感覺不容易記。
你在.m文件中會發現除了各個菜單項的Callback函數以外,還有兩個函數:
pjimage_OpeningFcn和pjimage_OutputFcn.而pjimage_OpeningFcn就相當於界面的初始化函數,而pjimage_OutputFcn則是界面的輸出函數,
也就是當你不運行fig,而調用.m文件時的返回值。
所以,我們要在pjimage_OpeningFcn中添加如下的程序,來共享這個img_src矩陣。代碼如下:
[plain] view plain print?
setappdata(handles.figure_pjimage,』img_src』,0);
然後,在m_file_open_Callback函數的最後寫上如下程序:

[plain] view plain print?
setappdata(handles.figure_pjimage,』img_src』,img_src);
那麼,我們在m_file_save_Callback函數中就可以像這樣的來提取img_src,如下:

[plain] view plain print?
img_src=getappdata(handles.figure_pjimage,』img_src』);
保存的時候,自然會用到保存對話框了。要用保存對話框,就要用到uiputfile函數了,具體的請用help uiputfile查看。
那麼,保存菜單項下的程序(m_file_save_Callback),可以這樣寫:

[plain] view plain print?
[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG
files'}, 'Pick an Image');
if isequal(filename,0) || isequal(pathname,0)
return;%如果點了「取消」
else
fpath=fullfile(pathname, filename);%獲得全路徑的另一種方法
end
img_src=getappdata(handles.figure_pjimage,'img_src');%取得打開圖
片的數據
imwrite(img_src,fpath);%保存圖片
下面是退出菜單項的程序的。要退出界面,只要用close函數就行了,但是通常都會有提示
的。比如你如果進行了處理圖片,而又沒有保存處理後的圖片,那麼在關閉的時候就應該給
出提示,詢問是否進行保存。不過,在這里,我們先不做這個工作,等後面有需要的時候再
寫吧。因此,這里的退出菜單項的程序就是一句,如下:

[plain] view plain print?
close(handles.figure_pjimage);
其實,用delete函數也是可以的,就是:delete(handles.figure_pjimage);看你的心情了。
但是運行程序的時候,你會發現,當你打開圖片的時候,如果點「取消」按鈕,那麼在MATLAB的命令窗口會彈出錯誤,那是因為我們沒有處理取消的情況。下面我們來處理下這個問題,只要把m_file_open_Callback下面的程序更改為如下程序即可:
[plain] view plain print?
[filename, pathname] = uigetfile( ...
{'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files (*.bmp, *.jpg, *.png,
*.jpeg)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick an image');
if isequal(filename,0) || isequal(pathname,0),
return;
end
axes(handles.axes_src);
fpath=[pathname filename];
img_src=imread(fpath);
imshow(img_src);
setappdata(handles.figure_pjimage,'img_src',img_src);

附錄---pjimage.m最終源代碼:
[plain] view plain print?
function varargout = pjimage(varargin)
% PJIMAGE MATLAB code for pjimage.fig
% PJIMAGE, by itself, creates a new PJIMAGE or raises the existing
% singleton*.
%
% H = PJIMAGE returns the handle to a new PJIMAGE or the handle to
% the existing singleton*.
%
% PJIMAGE('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in PJIMAGE.M with the given input arguments.
%
% PJIMAGE('Property','Value',...) creates a new PJIMAGE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before pjimage_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to pjimage_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help pjimage

% Last Modified by GUIDE v2.5 21-May-2016 13:35:10

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @pjimage_OpeningFcn, ...
'gui_OutputFcn', @pjimage_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before pjimage is made visible.
function pjimage_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to pjimage (see VARARGIN)

% Choose default command line output for pjimage
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes pjimage wait for user response (see UIRESUME)
% uiwait(handles.figure_pjimage);

setappdata(handles.figure_pjimage,'img_src',0);

% --- Outputs from this function are returned to the command line.
function varargout = pjimage_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

% --------------------------------------------------------------------
function m_file_Callback(hObject, eventdata, handles)
% hObject handle to m_file (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% --------------------------------------------------------------------
function m_file_open_Callback(hObject, eventdata, handles)
% hObject handle to m_file_open (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

[filename, pathname] = uigetfile( ...
{'*.bmp;*.jpg;*.png;*.jpeg','Image Files (*.bmp, *.jpg, *.png,*.jpeg)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick an image');

if isequal(filename,0) || isequal(pathname,0),
return;
end

axes(handles.axes_src);%用axes命令設定當前操作的坐標軸是axes_src
fpath=[pathname filename];%將文件名和目錄名組合成一個完整的路徑
%imshow(imread(fpath));%用imread讀入圖片,並用imshow在axes_src上顯示
img_src=imread(fpath);imshow(img_src);

setappdata(handles.figure_pjimage,'img_src',img_src);

% --------------------------------------------------------------------
function m_file_save_Callback(hObject, eventdata, handles)
% hObject handle to m_file_save (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

㈡ matlab如何編程

  • 首先,在我們的桌面上找到matlab軟體的圖標,將滑鼠移到該位置雙擊點開,這時電腦屏幕會彈出matlab軟體的主界面。

    這只是我的一點個人經驗,還是希望能夠幫助大家的。

熱點內容
pythonmd5校驗 發布:2025-02-12 08:51:00 瀏覽:469
編程題解析 發布:2025-02-12 08:40:30 瀏覽:453
bilibi手機緩存目錄在 發布:2025-02-12 08:33:11 瀏覽:457
聽ti密碼是多少 發布:2025-02-12 08:22:15 瀏覽:288
淘寶上傳視頻憑證 發布:2025-02-12 08:06:46 瀏覽:878
java畫 發布:2025-02-12 08:01:00 瀏覽:549
光遇安卓官服是在哪裡下載 發布:2025-02-12 07:47:47 瀏覽:648
安卓手機如何關閉程序打開廣告 發布:2025-02-12 07:31:06 瀏覽:469
新版影視大全不能緩存 發布:2025-02-12 07:31:04 瀏覽:976
sql兩個欄位in 發布:2025-02-12 07:29:45 瀏覽:771