
%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编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)