可以写程序,并且不用编译就可以运行。
可以编译为独立的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应该怎么编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)