
function xpbombs(arg1,arg2,arg3)
%XPBOMBS Play the minesweeper game
% There are 13 bombs hidden in the mine field Try to flag them
% and uncover all of the other spaces without getting blown up
% In each non-bomb square is printed the number of adjacent
% squares which contain bombs
%
% Use the FLAG button to toggle in and out of flag mode When
% in flag mode, clicking on any covered square places a flag on it
% Clicking on any flag removes it
%
% At any time during the game, the number of remaining unflagged
% bombs (assuming every flag is on a bomb) is shown in the upper left
%
% NEW stops the game and creates a new minefield
%
% CLOSE closes the game window
% Copyright 1984-2015 The MathWorks, Inc
persistent h minefield cntmines rows cols t nummines remaining
persistent HEIGHT WIDTH BWIDTH BHEIGHT textHndl
persistent flagHndl bomb hidden flag hb nhb hflag
if nargin < 1,
arg1 = 'start';
end;
if strcmp(arg1,'start') ;
rows = 8; % 16;
cols = 8; % 30;
nummines = 13; % 99;
BWIDTH = 35;
SWIDTH = 0;
BHEIGHT = 35;
SHEIGHT = 0;
WIDTH = BWIDTH + SWIDTH;
HEIGHT = BHEIGHT + SHEIGHT;
程序接口
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。
另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
matlab 程序的文件代码是以m文件的形式呈现的。将matlab代码编写进m文件内然后运行即可。
例子:
建立一个 helloworldm
文件内包括内容如下:
fprintf('Hello World!');
使用快捷键F5直接运行,然后可以在控制台下看到打印的:
Hello World!
1 x'-- x的转置矩阵
xx'的结果是矩阵或数值,由x的维数(x若为向量,维数就是其长度)决定
2 inv 求逆矩阵。
miu=1/(ad'inv(R)ad);
既然程序没有报错,那么(ad'inv(R)ad)就是一个数值,而
w = miuinv(R)ad = 1/(ad'inv(R)ad) inv(R)ad 是矩阵运算,
不能按照代数四则运算进行简单的“约分”。
3 y(1,v)=w'a;
v=v+1; 这是为了记录向量y,v表示当前值在向量中的位置。算完这一个后,位置向后移动,从v到(v+1),继续循环,算出的y值就记录在(v+1)位置处
matlab 这个软件是用来仿真算法的,有自己的编程语言,单片机用汇编语言或者C语言进行开发,所以matlab是不能用于单片机程序开发的。
实际使用情况是,matlab根据算法原理将算法进行实现后进行仿真验证,完了后,再将该算法用c语言或者汇编语言翻译出来移植到单片机或者其他嵌入式平台(如ARM,DSP)等
function f=qjs(x)
a=1:100;
v(1)=a(100)x+a(99);
for i=2:99
v(i)=v(i-1)x+a(100-i);
end
f=v(99)x+1;
保存m文件(这个会吧)
然后在command窗口输入
f1=qjs(05)
f2=qjs(08)
f3=qjs(095)
结果:
f1 =
3
f2 =
210000
f3 =
3675012
循环体被执行四次,重点看循环体语句“Output=[Outputeval([Expression{i},'(',num2str(Num),')'])];”这里有两部分:1、Output=[OutputXXX],这里的中括号表示做行方向上的拼接(省略了逗号,实际可以写成 [Output,XXX])。举例自己体会一下:a = [];b = [1 2; 3 4];a = [a b]c = [5 6; 7 8];a = [a c]输出:a = 1 2 3 4a = 1 2 5 6 3 4 7 8所以这一部分代码表示不断将XXX拼接到Output的后面。备注:[Output,XXX]表示行方向上的拼接(可省略逗号,用空格隔开)[Output;XXX]表示列方向上的拼接(分号不能省略)注意逗号和分号的区别。2、eval([Expression{i},'(',num2str(Num),')'])eval函数的功能是将一个字符串等价转换为一个对应可执行的matlab语句,举例:a = 3eval('b=4')输出:a = 3b = 4可以发现第二句实际上就是执行一句MATLAB语句,即b=4。回头来看看表达式[Expression{i},'(',num2str(Num),')'],只看i为1的时候,这句相当于是['zeros','(',num2str(Num),')']上面提到中括号内用逗号隔开是做行方向上的拼接,故中括号里面都是字符串时,实际上就是做字符串的拼接。所以i为1时,这个字符串是“zeros(2)”。因此,可以看到这里随着i的变化,产生了四个字符串,即:'zeros(2)''ones(2)''rand(2)''magic(2)'然后调用evaleval('zeros(2)') -->等价于MATLAB语句zeros(2)eval('ones(2)') -->等价于MATLAB语句ones(2)eval('rand(2)') -->等价于MATLAB语句rand(2)eval('magic(2)') -->等价于MATLAB语句magic(2)这下可以理解了吧,这个循环体实际上使用MATLAB自带的矩阵函数,生成了4个特殊矩阵,每个矩阵都是2x2的,最后把这4个2x2的矩阵在行方向上拼接到一起。故最后结果是一个2x8的矩阵。
以上就是关于如何用matlab编写一个扫雷程序全部的内容,包括:如何用matlab编写一个扫雷程序、matlab中如何编程序进去、matlab 程序详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)