matlab一问题,高手进 编写M脚本文件,将某班学生某门课程的成绩。。。

编写M脚本文件,将某班学生某门课程的成绩:60,75,85,97,52,36,86,56,94,84,77,统计各个分段的学生人数,并将每个人的学生成绩变为优,良,中,及格和不及格表示,统计人数和成绩变换都用子程序表示。
x=[60 75 85 96 52 36 86 56 94 84 77];
c=count1(x)
d=change1(x)
function z1=count1(xx)
n=size(xx);
z1=zeros(5,1);
for n1=1:n(2)
x1=fix(xx/10);
switch x1(n1)
case 9
z1(1)=z1(1)+1;
case 8
z1(2)=z1(2)+1;
case 7
z1(3)=z1(3)+1;
case 6
z1(4)=z1(4)+1;
otherwise
z1(5)=z1(5)+1;
end
end
function z1=change1(xx)
我把这些输入,它说??? Undefined function or method 'count1' for input arguments of type 'double'.
我加了function caculation,不再提示之前的那个,但变成这样了

>> function caculation
x=[60 75 85 96 52 36 86 56 94 84 77];
c=count1(x)
d=change1(x)
function z1=count1(xx)
n=size(xx);
z1=zeros(5,1);
for n1=1:n(2)
x1=fix(xx/10);
switch x1(n1)
case 9
z1(1)=z1(1)+1;
case 8
z1(2)=z1(2)+1;
case 7
z1(3)=z1(3)+1;
case 6
z1(4)=z1(4)+1;
otherwise
z1(5)=z1(5)+1;
end
end
function z1=change1(xx)
??? function caculation
|
Error: Function definitions are not permitted at the prompt or in scripts

主程序:
clear;clc;close all
a=[60,75,85,97,52,36,86,56,94,84,77];
str={'优','良','中','及格','不及格'};
y1=mytabulent(a);
y2=myTrans(a);
fprintf('转化如下\n');
for i=1:length(a)
fprintf('%d-----%s\n',a(i),y2{i});
end
fprintf('统计如下\n');
for i=1:length(y1)
fprintf('%s的人数是%d\n',str{i},y1(i));
end
转化的程序 myTrans.m
function y=myTrans(x)
y=cell(length(x),1);
for i=1:length(x)
if x(i)>=90
y{i}='优';
elseif x(i)>=80
y{i}='良';
elseif x(i)>=70
y{i}='中';
elseif x(i)>=60
y{i}='及格';
else
y{i}='不及格';
end
end
统计的程序mytabulent.m
function y=mytabulent(x)
y(5,1)=0;
y(1)=length(find(x>=90));
y(2)=length(find(x<90 & x>=80));
y(3)=length(find(x<80 & x>=70));
y(4)=length(find(x<70 & x>=60));
y(5)=length(find(x<60));
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-26
function不能写在script里面的,function前面可以有注释,但不可以有其他命令,如果有其他命令,matlab就会认为这个m文件是个脚本文件,而不是函数文件,因此会出错的,你要想写在一个m文件里面,就把你的脚本写成function,,比如在第一行加function caculation(不需要加输入输出);这样你的function z1=count1(xx)就变成了子函数,这样就不会报错了。
第2个回答  推荐于2018-04-21
比如:脚本a=4
函数function a=f(s)
a=s^2;
运行这两个m文件,脚本就建立了一个a变量,而运行函数就不会出现a变量。
这是最简单和最根本的区别了。本回答被网友采纳
第3个回答  2010-11-26
你有两个错误,首先你这个文件没有定义成一个m文件,第二,函数change1返回值z1没有定义,改了一下就没错了。
第4个回答  2010-11-24
count1是需要你自定义的一个函数。你定义这个count1之后MATLAB就不会报错了。本回答被网友采纳
相似回答