如何怎样学好matlab

如题所述

% 31.1
% 首先在MATLAB命令窗口输入命令guide;
% 然后在新窗口中进行可视化编程,移入有关控件并修改相应属性
% 下面是可视化界面上主要回调函数的代码
clear; %删除工作区变量
H1 = findobj(gcbf,'tag','edit1'); % 找H1
n1 = get(H1,'string'); % 获得字符串n1
H2 = findobj(gcbf,'tag','edit2'); % 找H2
n2 = get(H2,'string'); % 获得字符串n2
A1 = eval(n1); A2 = eval(n2); % 将字符串转化为数值
R1 = A1+A2; R2 = A1-A2; % 进行四则运算2
R3 = A1*A2; R4 = A1/A2; % 进行四则运算2
S3 = num2str(R1); % 将数值转化为字符串
H3 = findobj(gcbf,'tag','edit3'); % 找对象H3
set(H3,'string',S3); % 将字符串赋予控件H3
S4 = num2str(R2); % 将数值转化为字符串
H4 = findobj(gcbf,'tag','edit4'); % 找对象H4
set(H4,'string',S4); % 将字符串赋予控件H4
S5 = num2str(R3); % 将数值转化为字符串
H5 = findobj(gcbf,'tag','edit5'); % 找对象H5
set(H5,'string',S5); % 将字符串赋予控件H5
H6 = findobj(gcbf,'tag','edit6'); % 找对象H6
S6 = num2str(R4); % 将数值转化为字符串
set(H6,'string',S6); % 将字符串赋予控件H6

%-------------------------------------------------------------------------------------------------------------------

试用MATLAB求解热传导方程,区域为单位正方形,边界上u=0。
% 31.16
clear;
[p, e, t] = initmesh('squareg');
[p, e, t] = refinemesh('squareg',p,e,t);
u0 = zeros(size(p,2),1);
ix = find(sqrt(p(1,:).^2+p(2,:).^2)<0.4);
u0(ix) = ones(size(ix));
tlist = [0, 1, 2, 3];
u = parabolic(u0,tlist,'squareb1',p,e,t,1,0,1,1);
tlist(2), u(:,2)',

%3(7)二分法-----------------------------------------------------------------------------------------------------
clear all; % 删除内存空间变量
C03_43('C03_42',2.0,4.0,0.00001)
%--------------------------------------------------------------
%定义目标函数,下述代码另存为工作目录下的C03_42.m文件
function y=C03_42(x);
y=x-log(x)-2;
%--------------------------------------------------------------
%定义迭代法的函数文件,将下述代码另存为函数文件C03_43.m
function c=C03_43(C03_42,a,b,delta)
%C03_42是所要求解的函数
%a和b分别为有根区间的左右限
%delta是允许的误差界
%c为所求近似解
ya=feval('C03_42',a);yb=feval('c03_42',b);
a=2;b=4;
if yb==0,c=b;return;end
if ya*yb>0,disp('(a,b)不是有根区间');return;end
max1=1+round((log(b-a)-log(delta))/log(2));
for k=1:max1
c=(a+b)/2;yc=feval('C03_42',c);
if yc==0;a=c;b=c;return;
elseif yb*yc>0;b=c;yb=yc;
else;a=c;ya=yc;
end
if (b-a)<delta;return;end
end
c=(a+b)/2;err=abs(b-a);yc=feval('C03_42',c)
%-------------------------------------------------------------------------------------------------------------------
%15在同一坐标系中画出方程3个解随a在区间[0,2]变化的曲线。在同一坐标系中画出方程3个解随a在区间[0,2]变化的曲线。
clear all; %删除内存空间变量
k=0; %仿造C语言循环标记法:取项数k,令k初始值为0
for i = 0:0.01:2 %设循环变量i,从0变到2

k = k+1; %每循环一次,项数加1
a(k)= i; %a实为包含变化值的数组,计算时取为i在本次循环的值
A =[ a(k), 1, -1;...
2 , 1, -4;...
1 , 5, 1; ]; %定义矩阵A,a取本次循环的i值
B =[ 8 , 5 , -2 ]; %定义矩阵B

X = A \ B'; %求解出在此a值下的AB矩阵方程的解向量X

X1(k) = X(1); %取出本次X1,放入X1数组
X2(k) = X(2); %取出本次X2,放入X2数组
X3(k) = X(3); %取出本次X3,放入X3数组

end; %结束循环
plot( a,X1, a,X2, a,X3 ); %打出a与X1、X2、X3的对应关系图像,相当于以a为自变量的三个函数

% 31.14-----------------------------------------------------------------------------------------------------------
将图形标题改为“绘制函数图形”、不显示系统默认菜单、并适当修改其图形与坐标轴标题。
% 首先使用命令ezplot('u.^2+v.^2-2')作出隐函数的图形,
% 然后修改标题属性为“绘制函数图形”,
% 进而将菜单属性figure的属性值修改为“none”,
% 最后单击坐标轴,将坐标轴xlim和ylim的属性分别改为[-3,2]和[-2,3]。
% 隐函数画图
clf %清空当前图像
ezplot( 'u^2 + 2*v^2-2' ,[-3,2,-2,3]); %对隐函数进行描绘
legend( 'u^2 + 2*v^2-2' , 1 ); %以格式1添加图例
title ( {'绘制函数图形'} ); %添加标题
xlabel( '横轴 u' ); %对x坐标轴命名
ylabel( '纵轴 v' ); %对y坐标轴命名
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-11
http://www.matlabsky.com/thread-8-1-1.html
论坛上有老师对各位新手的忠告
第2个回答  2012-11-12
多上机。。木有捷径