用matlab写一段简单的代码~

用matlab写一段简单的代码~,第1张

%minmaxm

function [A,B,C,m,n]=minmax(a,b,c,minmax)

%输入不合法就不验证了

%A,B,C分别返回amax,bx最大值(或最小值),

%与bx同行的c,minmax=1求最小,minmax=2求最大

%m返回amax个数,n返回bmax个数

%同楼上题目确实很难理解,希望写清楚点,回答的人会多点

%用matlab写一段简单的代码~,加注释写了近20分钟,郁闷。

%想写好也不简单吧,看你考虑问题多细致

%%粗糙做三分钟能写好,但是没有通用性,这种代码没有普适性,

%不好意思拿出手

%写的仓促,没有仔细验证通用性,不足之处请指出

if minmax==1

X=[a,b,c];B=[];C=[];A=[];

amin=min(a);

m=find(amin);%amax所在行

for i=1:length(m)%因为可能有多个值取最小amin,处理此意外用

A=[A,amin];

bx=X(m,:);

bxmin=min(bx);

B=[B,bxmin];

n=find(bxmin)

cx=X(n,3);%与bxmin同行的c

C=[C,cx];

end

end

if minmax==2

X=[a,b,c];B=[];C=[];A=[];

amax=max(a);

m=find(amax);%amax所在行

for i=1:length(m)%因为可能有多个值取最大amax,处理此意外用

A=[A,amax];

bx=X(m,:);

bxmax=max(bx);

B=[B,bxmax];

n=find(bxmax)

cx=X(n,3);%与bxmax同行的c

C=[C,cx];

end

end

%%%以下是测试部分%%%

n=5;

a=rand(n,1)

b=rand(n,1)

c=rand(n,1)

d=minmax(a,b,c,2)

%%%%%%结果%%%%%%%%

a =

04057

09355

09169

04103

08936

b =

00579

03529

08132

00099

01389

c =

02028

01987

06038

02722

01988

n =

1

A =

09355

B =

04057

C =

02028

m =

1

n =

1

述方法描述中,采用如下实例程序进行说明。

%实例程序

[xx,yy] = meshgrid(1:20,1:20);

d = sqrt(xx^2+yy^2);

zz = peaks(10);

out = d + zz;

surf(out);shading interp;

MATLAB程序运行错误后,切换到MATLAB命令行中,观察命令行中的错误信息,确定错误原因

在错误信息中,查找源程序中错误代码的行数,点击行数链接,可以直接定位错误语句

错误语句定位后,自动跳转到代码编辑器中,在代码编辑器中通过光标标识错误代码的位置

确定错误语句后,通过F12快捷键在错误语句处设定断点

断点设定完成后,通过F5快捷键重新执行程序,程序会在断点处停止运行,进入调试状态

在调试状态下有多个步骤可以查找程序问题的原因。

(1)将鼠标放置在变量上方,这时代码编辑器会自动显示变量的类型、维数、各维大小等信息,根据此信息帮助程序员查找程序中变量错误原因。

在调试状态下有多个步骤可以查找程序问题的原因。

(2)将问题代码行复制到在MATLAB命令行中执行,重现错误。这样可以反复重新错误,而不中断程序运行,而且不用重新执行程序,提高调试效率。

在调试状态下有多种方法可以查找程序问题的原因。

(3)通过whos、size、help等命令协助确定错误原因。其中,whos命令可以查看当前工作区中变量列表,size可以确定某一变量的维数和各维大小,help可以确定某一 *** 作符或函数的帮助信息。

如:

K>> whos

Name Size Bytes Class Attributes

ans 1x2 16 double

d 20x20 3200 double

filename 1x60 120 char

xx 20x20 3200 double

yy 20x20 3200 double

zz 10x10 800 double

K>> size(zz)

ans =

10 10

K>> size(d)

ans =

20 20

K>> help +

plus - Addition

This MATLAB function adds arrays A and B and returns the result in C

C = A + B

C = plus(A,B)

plus 的参考页

另请参阅 cumsum, minus, sum, uplus

名为 plus 的其他函数

finance/plus, fixedpoint/plus, symbolic/plus, matlab/plus, +,

symbolic/plus, +, matlab/+, symbolic/+

K>>

10

仔细分析上述信息,最终确定MATLAB程序执行错误的原因。上述实例中,程序执行错误的原因为:变量a和变量zz的行数和列数不一致,不符合+ *** 作符的要求。

在命令窗口(Command Window)中:

1) 上、下键――切换到之前、之后的命令,可以重复按多次来达到你想要的命令

2) clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉

3) clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成

4) Tab键――(转自版友心灯)在看到的:在command窗口,输入一个命令的前几个字符,然后按tab键,会d出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab65版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示

5) Ctrl+C(或Ctrl+Break)――(转自版友yangjin_ren)在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此 *** 作的前提是能够激活切换到命令窗口才行,呵呵。

2 在编辑器(Editor)中:

1) Tab(或Ctrl+])――增加缩进(对多行有效)

2) Ctrl+[--减少缩进(对多行有效)

3) Ctrl+I--自动缩进(即自动排版,对多行有效)

4) Ctrl+R――注释(对多行有效)

5) Ctrl+T――去掉注释(对多行有效)

6) Ctrl+B――括号配对检查(对版本65有效,但版本70无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过)

7) F12――设置或取消断点

8) F5――运行程序

其余的例如在Debug状态下的快捷键就不多说了,自己看菜单Debug吧!

累了, 有时间再写吧。希望大家多

clear;

clc;

a = [1,4,2,61,7,5,34,25,68,98];

b = [2,6,7,10];

aa = a(b);

bb = find(aa<10);

c = b(bb)

cc = find(aa>10);

d = b(cc)

结果:

c =

2 6

d =

7 10

有问题可以追问

求采纳 给好评

第一行A 是一个矩阵

第2行 Y是一个矩阵

第三行A=[A,ones(size(y))];

假如一个矩阵 c=[1] 那么 c=[2 c] 得到的是c=[2 1]

ones应该知道吧 size求y的长度

B=regress(Y,X)是用最小二乘法进行线性回归。

B是回归系数,Y是因变量,X是自变量数组。

plot是画画用的

以上就是关于用matlab写一段简单的代码~全部的内容,包括:用matlab写一段简单的代码~、MATLAB程序运行出错、Matlab编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9698904.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存