matlab子函数中if语句不能运行主函数如下:A=[80,20,100;40,30,30;10,90,60];global M m ave M=max(A);m=min(A);ave=mean(A);eta(1,:)=M./sum(M);eta(2,:)=ave./sum(ave);eta(3,:)=m./sum(m);alpha=0;julei(A)子函数如下:function sigma=julei(A

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 14:39:07
matlab子函数中if语句不能运行主函数如下:A=[80,20,100;40,30,30;10,90,60];global M m ave M=max(A);m=min(A);ave=mean(A);eta(1,:)=M./sum(M);eta(2,:)=ave./sum(ave);eta(3,:)=m./sum(m);alpha=0;julei(A)子函数如下:function sigma=julei(A

matlab子函数中if语句不能运行主函数如下:A=[80,20,100;40,30,30;10,90,60];global M m ave M=max(A);m=min(A);ave=mean(A);eta(1,:)=M./sum(M);eta(2,:)=ave./sum(ave);eta(3,:)=m./sum(m);alpha=0;julei(A)子函数如下:function sigma=julei(A
matlab子函数中if语句不能运行
主函数如下:
A=[80,20,100;40,30,30;10,90,60];
global M m ave
M=max(A);
m=min(A);
ave=mean(A);
eta(1,:)=M./sum(M);
eta(2,:)=ave./sum(ave);
eta(3,:)=m./sum(m);
alpha=0;
julei(A)
子函数如下:
function sigma=julei(A)
sigma(3,3)=0;
for i=1:size(A,1)
for j=1:size(A,2)
if A(i,j)>=ave(j)
sigma(i,1)=sigma(i,1)+(A(i,j)-ave(j))/((1+alpha)*M(j)-ave(j))*eta(i,j);
sigma(i,2)=sigma(i,2)+((1+alpha)*M(j)-A(i,j))/((1+alpha)*M(j)-ave(j))*eta(i,j);
else
sigma(i,2)=sigma(i,2)+(A(i,j)-(1-alpha)*m(j))/(ave(j)-(1-alpha)*m(j))*eta(i,j);
sigma(i,3)=sigma(i,3)+((ave(j)-A(i,j))/(ave(j)-(1-alpha)*m(j)))*eta(i,j);
end
end
end
sigma
下面是运行结果
? Undefined function or method 'ave' for input arguments of type 'double'.
Error in ==> julei at 5
if A(i,j)>=ave(j)
Error in ==> zhuchengxu at 10
julei(A)

matlab子函数中if语句不能运行主函数如下:A=[80,20,100;40,30,30;10,90,60];global M m ave M=max(A);m=min(A);ave=mean(A);eta(1,:)=M./sum(M);eta(2,:)=ave./sum(ave);eta(3,:)=m./sum(m);alpha=0;julei(A)子函数如下:function sigma=julei(A

主要问题:

你在主程序中定义了全局变量

global M m ave

要想在函数中使用这几个全局变量,需要在函数中也用同样的语句进行声明才行,否则在函数中出现的标识符会被理解为局部变量或函数的名字.

 

另外,主程序中的alpha和eta也不会自己跑到函数中去,也需要声明成全局变量,或者把定义移到函数中去.

 

其实,你所定义的几个全局变量(以及alpha和eta)在主程序中并没有其他用处,这样的话,不如把这些变量直接在函数中作为局部变量来定义和使用,例如:

function sigma=julei(A)

M=max(A);
m=min(A);
ave=mean(A);
eta(1,:)=M./sum(M);
eta(2,:)=ave./sum(ave);
eta(3,:)=m./sum(m);
sigma(3,3)=0;
alpha=0;
for i=1:size(A,1)
    for j=1:size(A,2)
        if A(i,j)>=ave(j)
            sigma(i,1)=sigma(i,1)+(A(i,j)-ave(j))/((1+alpha)*M(j)-ave(j))*eta(i,j);
            sigma(i,2)=sigma(i,2)+((1+alpha)*M(j)-A(i,j))/((1+alpha)*M(j)-ave(j))*eta(i,j);
        else
            sigma(i,2)=sigma(i,2)+(A(i,j)-(1-alpha)*m(j))/(ave(j)-(1-alpha)*m(j))*eta(i,j);
            sigma(i,3)=sigma(i,3)+((ave(j)-A(i,j))/(ave(j)-(1-alpha)*m(j)))*eta(i,j);
        end
    end
end

 

这样,主程序就很简单了:

A=[80,20,100;40,30,30;10,90,60];
S=julei(A)

输出:

S =
    0.6667         0    0.3333
         0    0.3685    0.6315
    0.3333    0.4500    0.2167

matlab子函数中if语句不能运行主函数如下:A=[80,20,100;40,30,30;10,90,60];global M m ave M=max(A);m=min(A);ave=mean(A);eta(1,:)=M./sum(M);eta(2,:)=ave./sum(ave);eta(3,:)=m./sum(m);alpha=0;julei(A)子函数如下:function sigma=julei(A matlab的子函数中涉及一个变量,在主函数中会进行赋值,在子函数中怎样定义 matlab中这个语句h=figure('position',[350 275 400 300],'color','w'),怎么就不能运行呢?简单的句柄中,涉及figure就是不能运行? 如何在matlab中建立子函数? matlab if语句 Matlab中有子函数如何写主函数function TimeAnalysis()global SamplingFreq IF SatelliteNum FreqBand StartMs AnalysisMs ReadLengthMs AcquireBW StandardFreqfb=IF; fs=SamplingFreq; fstan=StandardFreq; f0=fb-fs; LL=20; switch FreqBandcase 4 load L 高手指点一下Matlab的主函数和子函数的关系,怎么建立子函数 使用if语句编写,matlab求《matlab程序设计》这门课的成绩平均分并输出,以及输出小于平均分的成绩(及姓名),(1)score=[100 88 70].(2)求平均分是子函数.(3)输出小于平均分的子函数. matlab 显示子函数的参数被调用的子函数中的一些参数值如何在workspace中显示出来 matlab子函数matlab的子函数是不是必须要有参数 有一串数字(成绩),用matlab中switch语句统计分段人数,并将个人的成绩变为优良中和不及格,统计人数和成绩都用子函数实现.谢谢了我只是不知道如何使用switch. matlab if语句怎么写啊? matlab if简单语句怎样写 用if语句判语句判断80>=x>60,在MATLAB中if语句后的判断应怎么写? Matlab中如何使用if语句?如果y=x+5在条件0 在matlab中如何用if语句判断图像的格式 matlab的if条件语句中如何表示1≤a≤10? matlab中for i=1:n ,如果想用if代替该语句,怎么写?