用matlab编写程序

用matlab编写程序,第1张

可以写程序,并且不用编译就可以运行。

可以编译为独立的exe文件。查compile有关的命令,Matlab书籍上都有介绍。

Matlab擅长图像处理,如果有问题,换个函数就行了,读不成问题。

写程序得看具体情况。

Matlab作为一个编程语言,我个人的看法是:无所不能。

a=zeros(20,75);%20个老师,每个老师75张卷的任务

s=zeros(20,1); %每个老师已分配的任务数,初始都是0

for j=1:500 %500份试卷要分配

r=nan;

for i=1:3 %同一份试卷,要分配三次

R=find(s==min(s)); %找到分配任务数最少的老师

R=R(R~=r); %同一份试卷,不能分给同一个老师

r=R(randi(length(R))); %将试卷随机分配给可选的老师中的一个

C=find(a(r,:)==0); %找到该老师任务的空位

c=C(randi(length(C))); %随机选一个任务位置

a(r,c)=j; %将这第j份试卷分配给这个老师的这个任务空位

s(r)=s(r)+1; %该老师的已分配任务数加1

end

end

当然以上的方法保证a每一行不同,但是a中同一列有可能相同

如果需要同行全不相同,同列也都不相同,下面代码可以实现

实际上是用对角线(斜方向)填充办法,保证相同的三个数不会

填充在同一行和同一列,然后再整行,整列地打乱矩阵的顺序

因为数据是整行整列地变动的,所以顺序打乱之后依旧保持

同行不相同,同列不相同

a=zeros(20,75);

i=0;j=0;

for m=randperm(500)

for n=1:3

i=mod(i,20)+1;

j=mod(j,75)+1;

if(a(i,j)~=0),i=mod(i,20)+1;end

a(i,j)=m;

end

end

a=a(randperm(20),randperm(75));

同行不同意义是明显的,因为同一张卷,一个老师不会改两次以上

而同一列不同,有时候也是有意义的

假设老师评卷是流水作业,也就是每以轮任务所有老师是同时工作的

那么保证同列不同,就不会出现在同一轮任务中,两个老师抢一张卷的情况

可以最高效率地分配完成任务

不需要用循环,直接使用逻辑数组运算更快。

我假设你的x和x(1)--x(n)是不同的变量,那么我用a来表示你的x,用x数组代表你的x(1)--x(n)

我随便给这些数赋值

a=10;

x=1:3:30;

k=5;

temp = true(size(x));

temp(k) = false;

y = prod(a - x) / prod(x(k) - x(temp));

a-x是生成数组[a-x(1), a-x(2), , a-x(n)],prod()是吧这个数组相乘

temp是一个逻辑数组,和x相同大小,并且只有第k个数是false。x(temp)就是生成[x(1), x(2),, x(k-1), x(k+1), , x(n)]

其他的应该容易理解

补充:拉格朗日插值多项式可也这么写:

%x0,y0是已知各点坐标,共n点

x0 = [1, 2, 3];

y0 = [1, 8, 27];

n = length(x0);

%x是要求的点

x = 4;

y = 0;

for k = 1:n

temp = true(size(x0));

temp(k) = false;

y = y + y0(k) prod(x - x0(temp)) / prod(x0(k) - x0(temp));

end

以上就是关于用matlab编写程序全部的内容,包括:用matlab编写程序、MATLAB编出程序、问一下大神matlab应该怎么编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9760474.html

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

发表评论

登录后才能评论

评论列表(0条)

保存