مثال :
به عنوان مثال ، تابع graphminspantree در متلب برای حل مسئله minimal spanning tree در یک گراف به کار می رود . چنانچه فردی بخواهد کدهای نوشته شده برای این تابع را مشاهده کند باید دستور زیر را اجرا کند :
type graphminspantree
نتیجه :
function [T,pred] = graphminspantree(G,varargin)
%GRAPHMINSPANTREE finds the minimal spanning tree in graph.
%
% [T, PRED] = GRAPHMINSPANTREE(G) finds an acyclic subset of edges that
% connects all the nodes in the undirected graph G and for which the total
% weight is minimized. Weights of the edges are all nonzero entries in the
% lower triangle of the n-by-n sparse matrix G. T is a spanning tree
% represented by a sparse matrix. The output PRED contains the predecessor
% nodes of the minimal spanning tree with the root node indicated by a
% zero. The root defaults to the first node in the largest connected
% component, which requires an extra call to the graphconncomp function.
%
% [T, PRED] = GRAPHMINSPANTREE(G,R) sets the root of the minimal spanning
% tree to node R.
%
% GRAPHMINSPANTREE(...,'METHOD',METHOD) selects the algorithm to use,
% options are:
% ['Prim'] - Prim's algorithm grows the MST one edge at a time by
% adding a minimal edge that connects a node in the
% growing MST with any other node. Time complexity is
% O(e*log(n)).
% 'Kruskal' - Kruskal's algorithm grows the MST one edge at a time by
% finding an edge that connects two trees in a spreading
% forest of growing MSTs. Time complexity is
% O(e+x*log(n)) where x is the number of edges no longer
% than the longest edge in the MST.
%
% Note: n and e are number of nodes and edges respectively.
%
% GRAPHMINSPANTREE(...,'WEIGHTS',W) provides custom weights for the edges,
% useful to indicate zero valued weights. W is a column vector with one
% entry for every edge in G, traversed column-wise.
%
% Remarks: When the graph is unconnected, Prim's algorithm only returns the
% tree that contains R, while Kruskal's algorithm returns an MST for every
% component.
%
% Example:
% % Create an undirected graph with 6 nodes
% W = [.41 .29 .51 .32 .50 .45 .38 .32 .36 .29 .21];
% DG = sparse([1 1 2 2 3 4 4 5 5 6 6],[2 6 3 5 4 1 6 3 4 2 5],W)
% UG = tril(DG + DG')
% view(biograph(UG,[],'ShowArrows','off','ShowWeights','on'))
% % Find the minimum spanning tree of UG
% [ST,pred] = graphminspantree(UG)
% view(biograph(ST,[],'ShowArrows','off','ShowWeights','on'))
%
% See also: GRAPHALLSHORTESTPATHS, GRAPHCONNCOMP, GRAPHISDAG,
% GRAPHISOMORPHISM, GRAPHISSPANTREE, GRAPHMAXFLOW, GRAPHPRED2PATH,
% GRAPHSHORTESTPATH, GRAPHTHEORYDEMO, GRAPHTOPOORDER, GRAPHTRAVERSE.
%
% References:
% [1] J. B. Kruskal. "On the shortest spanning subtree of a graph and the
% traveling salesman problem" In Proceedings of the American
% Mathematical Society, 7:48-50, 1956.
% [2] R. Prim. "Shortest connection networks and some generalizations"
% Bell System Technical Journal, 36:1389-1401, 1957.
% Copyright 2006-2008 The MathWorks, Inc.
% $Revision: 1.1.6.7 $ $Date: 2010/09/02 13:28:55 $
algorithms = {'prim','kruskal'};
algorithmkeys = {'pri','kru'};
debug_level = 0;
% set defaults of optional input arguments
W = []; % no custom weights
R = []; % no root given
algorithm = 1; % defaults to prim
% find out signature of input arguments
if nargin>1 && isnumeric(varargin{1})
R = varargin{1};
varargin(1) = [];
end
% read in optional PV input arguments
nvarargin = numel(varargin);
if nvarargin
if rem(nvarargin,2) == 1
error('Bioinfo:graphminspantree:IncorrectNumberOfArguments',...
'Incorrect number of arguments to %s.',mfilename);
end
okargs = {'method','weights'};
for j=1:2:nvarargin-1
pname = varargin{j};
pval = varargin{j+1};
k = find(strncmpi(pname,okargs,numel(pname)));
if isempty(k)
error('Bioinfo:graphminspantree:UnknownParameterName',...
'Unknown parameter name: %s.',pname);
elseif length(k)>1
error('Bioinfo:graphminspantree:AmbiguousParameterName',...
'Ambiguous parameter name: %s.',pname);
else
switch(k)
case 1 % 'method'
algorithm = find(strncmpi(pval,algorithms,numel(pval)));
if isempty(algorithm)
error('Bioinfo:graphminspantree:NotValidMethod',...
'String "%s" is not a valid algorithm.',pval)
elseif numel(algorithm)>1
error('Bioinfo:graphminspantree:AmbiguousMethod',...
'String "%s" is ambiguous.',pval)
end
case 2 % 'weights'
W = pval(:);
end
end
end
end
% find manually the best root (if it was not given)
if isempty(R)
[num_comp,classes] = graphconncomp(G,'directed',false);
if num_comp==1
R = 1;
else
R = find(classes==mode(classes),1,'first');
end
end
% call the mex implementation of the graph algorithms
if nargout>1
if isempty(W)
[T,pred] = graphalgs(algorithmkeys{algorithm},debug_level,false,G,R);
else
[T,pred] = graphalgs(algorithmkeys{algorithm},debug_level,false,G,R,W);
end
else
if isempty(W)
T = graphalgs(algorithmkeys{algorithm},debug_level,false,G,R);
else
T = graphalgs(algorithmkeys{algorithm},debug_level,false,G,R,W);
end
end
مشاهده می کنید که در ابتدای برنامه نیز توضیحاتی نوشته شده است تا به راحتی بتوانید به نحوه عملکرد تابع و کدهای نوشته شده برای آن پی ببرید .
برچسبها: متلب چیست, کارگاه آموزشی متلب, دانلود کتاب آموزش نرم افزار MATLAB, اموزش جامع نرم افزار متلب

فرض کنید قرار است محیط بسته ای که دو معادله ی زیر با هم می سازند با رنگ سبز (بدون منظور خاصی !) پر کنیم :
y=x+1
y=x^2
بسیاری از کاربران متلب خیلی ساده می دانند که برای پر کردن محیط بسته با رنگ خاص در متلب می توان از فرمان fill استفاده کرد اما روش درست استفاده از آن کمی پیچیده است
ابتدا دستور hold را فعال کرده و دو نمودار را رسم می کنیم :
hold on;
ezplot('x+1');
ezplot('x^2');
برای رسم دقیق قسمت پر کننده شما نیاز به دانستن محل تقاطع دو خط دارید و برای این کار هم لازم است معادله ی آن دو با هم حل شود :
s=solve('y=x+1','y=x^2');
شکل کلی فرمان fill به صور ت زیر است
fill(X,Y,ColorSpec)
که در آن x و y مجموعه ی نقاطی هستند که یک محیط بسته ی دو بعدی را تشکیل می دهند و نیز رنگ زمینه را هم در قسمت آخر همانند دستور plot تعیین می کنید
باقی کار چندان مشکل نیست فقط شما نیاز دارید که x ها در بین دو نقطه ی تقاطع منحنی جای بگیرند و y ها هم از روی یکی از معادلات به طور دقیق محاسبه شوند، هر چه تعداد نقاط بیشتر باشد هاشور دقیقتر شکل می گیرد
f2=x^2;
x=linspace(subs(s.x(1)),subs(s.x(2)),3);
y2=subs(f2,x);
fill(x,y2,'g');
plot(x,y2,'r+')
axis([-2 2 -1 4])
برای درنظر گرفتن تعداد نقاط بیشتر می توانید در فرمان linspace بجای عدد 3 از 30 یا 40 استفاده کنید و ببینید تغییرات به چه صورت خواهد بود.
متن کامل برنامه به صورت زیر است :
|
clc; hold on; ezplot('x+1'); ezplot('x^2'); s=solve('y=x+1','y=x^2'); syms x; f2=x^2; x=linspace(subs(s.x(1)),subs(s.x(2)),3); y2=subs(f2,x); fill(x,y2,'g'); plot(x,y2,'r+') axis([-2 2 -1 4]) |
برچسبها: متلب, دانلود کتاب آموزش نرم افزار MATLAB, اموزش جامع نرم افزار متلب, دانلود برنامه نويسي Matlab
از دوستانی که قبلا این فایلهارا درنت قرار داده بودند دوباره تشکر میکنیم
دانلود فایل اموزشی سیمولینک متلب
دانلود
پسورد : spow
برچسبها: دانلود کتاب آموزش نرم افزار MATLAB, اموزش جامع نرم افزار متلب, دانلود برنامه نويسي Matlab, کد متلب الگوریتم سیمپلکس
برای معرفی رنگ در ترسیم از حروفات کلیدی استــفاده می شود
که داخل کوتیشن در دسترplot نوشته می شود.
به مثال زیر توجه کنید:
plot(x,y,'r')
این دستور ترسیم را با رنگ قرمز انجام می دهد و به نوع ترسیم
کاری ندارد.
plot(x,y,'^')
این دستور به رنگ کـــــــــاری ندارد و فقط نقاط را با مثلث نمایش
می دهد.
plot(x,y,':')
این دستور فقط ترسیم را به صورت خط چین انجام می دهد.
هرکدام از سه حرف کلیدی بالا از گروه خاصی هستند که می توان
آنها را باهم ترکیب نمود.
(:^x,y,'r)plot
در این دستور سه حرف کلیدی بالا با هم ترکیب شده است.
حرف اول رنگ (قرمز)... حرف دوم علامت(مثلث) و حرف سوم نوع
خط(نقطه چین) را تعیین می کند.
حروفات رنگ درplot حروفات ترسیم
b آبی - خط صاف
g سبز : نقطه چین
r قرمز .- خط نقطه
c فیروزه ای -- خط چین
m بنفش (خالی) بدون ترسیم خط
y زرد
k مشکی
حروفات نمایش نقطه
. نقطه
O دایره
X ضربدر
+ علامت اضافه
* ستاره
sمربع
d لوزی
^ مثلث(به طرف بالا)
vمثلث(به طرف پایین)
>مثلث(به طرف چپ)
Pستاره پنج راسی
h ستاره شش راسی
برچسبها: متلب چیست, کارگاه آموزشی متلب, دانلود کتاب آموزش نرم افزار MATLAB, اموزش جامع نرم افزار متلب
