matlab子函数中if语句不能运行

作者&投稿:鄂义 (若有异议请与网页底部的电邮联系)
matlab中if语句运行一直提示说语句不完整求帮忙解决~

endif -> end
试试

MATLAB中我们常常用到条件判断语句结构,通过实例介绍这个结构的用法:
1、if.....end结构,运行下面的句子,此条件语句是判断5是否大于3,如果大于3,就将1赋值给;

2、if....else...end 结构,我们以如下内容进行判断:

运行以上语句,结果如下a1=1,a2=1,判断a1是否大于a2,显然不大于,然后就执行else语句,给a赋值为2;

3、if..elseif...else...end 结构
我们以如下语句为例,进行此条件结构的示例

运行以上语句,结果如下:

a1=a2=1,判断a1>a2?不满足,执行elseif语句,a1<a2,不满足,执行else语句,a=3
MATLAB IF 条件语句用法以及实例如下:
1、if语句是一种选择判断语句,可以和for语句结合使用,也可以单独使用,这里创建了3个变量,作出了一个简单判断如果a小于b,b等于a,需要注意的是if语句后面要有end语句结束,如下图所示:

2、运行脚本之后,在命令行窗口可以看到b已经等于a了,如下图所示:

3、if嵌套语句,这里作出的判断是如果a小于b,b等于a,如果继续b还大于c,b等于c,如下图所示:

4、运行脚本,在命令行窗口可以看到b等于a,这里是因为b变量只满足第一个条件,如下图所示:

5、if语句中的else语句,else是否则的意思,这里作出的判断是如果a小于b,b等于a,如果满足a小于b条件下,b大于c,b就等于c,否则b=c-a,如下图所示:

6、运行脚本,在命令行可以看出结果b=c-a,只满足第一个条件,第二个条件不满足进去else语句里面去了,如下图所示:

主要问题:

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

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


A(i,j)>=ave(j) 想表达什么意思?
julei(A)是想干啥?没见过这种表达的。

if A(i,j)>=ave(j)

本身就表示的不对


新人求助matlab安装包做毕设要用
利用 MATLAB,可以从文件、其他应用程序、数据库以及外部设备访问数据。您可以从各种常用 文件格式(如 Microsoft Excel、文本或二进制文件、图像、语音和视频文件)以及诸如 netCDF 和 HDF 等科学文件中读取数据。借助文件 I\/O 函数,可以处理任意格式的数据文件。2、分析数据 利用 MATLAB,可以对数据进行...

捕鱼有一个版本是打红色乌龟然后爆全屏的是什么版本
好像叫恩芳海啸来袭。有金鲨有乌龟阵的。

无为县13835121061: matlab中 为什么不执行if部分? -
彘是盐酸: 这个函数是单值的,应该设一个循环,多次调用这个函数,for i=-3:5 f(i) end

无为县13835121061: matlab中第二个elseif语句为什么不执行,求大神指教 -
彘是盐酸: 程序修改为: x4=linspace(103.104,220,10); len=length(x4); for i=1:len if x4(i)>=103.104&x4(i)<149.266; y4(i)=-0.0009*(x4(i)-103.104).^2-0.2886*(x4(i)-103.104)+50; elseif x4(i)>=149.266&x4(i)<197.62; y4(i)=0.0017*(x4(i)-149.266).^2-0.2532*(x4(i)-...

无为县13835121061: matlab的if没有执行问题 -
彘是盐酸: 本身你这个程序写得就不好,我估计你想实现的是下面的代码 qim=0; qie=(0:10)/10; t=0.5*(qim+qie==0.4); % t=0.5*(abs(qim+qie-0.4)plot(qie,t); 另外就是,在计算机当中0.1和0.4都不能精确存贮,所以这种写法本身就是比较危险的,严重依赖于0:0.1:1的具体生成方式.按我刚才的方式写也不保证对其它数据的正确性,如果你没有足够的知识来保证浮点运算的安全性最好还是按照诸如 abs(a-b)

无为县13835121061: 请问为什么Matlabif部分语句不执行 -
彘是盐酸: if语句肯定执行了,要不然A1全是0;程序里面又很多多余的语句,不是程序的问题

无为县13835121061: 为什么if语句不起作用 -
彘是盐酸: matlab程序不熟悉.if语句不起作用,看这样是否可以:测试看是否先进入了for循环,如随便打印一个值,是否进入.再if else输出测试输出值,看它是否进入了哪里.就判断if逻辑逻辑可以.

无为县13835121061: MATLAB编程时使用语句"if"出错求助 -
彘是盐酸: 程序改为如下应该就可以了!loc_h=zeros(20,20); BW2=zeros(64,128); hori=1; vert=1; for i=1:64 for j=2:128 if BW2(i,j)~=BW2(i,j-1) loc_h(hori,vert)=BW2(i,j); hori=hori+1; vert=vert+1; end end end loc_h

无为县13835121061: matlab 的if 语句执行不了 -
彘是盐酸: 同学,1<a<200,1<b<200,这种连着的不等号在多数程序语言中都是不允许的. 以1<a<200为例,它是从左向右运算的,1<a得到的逻辑值(1或者0)再与200比较,所以不管a是不是大于1,这个不等式都是成立的. 这里应该拆开写: 1<a && a<200 && 1<b && b<200.......

无为县13835121061: matlab中if语句的使用,报错 -
彘是盐酸: 你要看看的matlabworkspace(工作空间)里有没有theta变量,没有的话在执行上边的代码时必须先定义theta,再来执行

无为县13835121061: matlab if语句提示出错 -
彘是盐酸: >>a=[.....]; %矩阵a你自己输入 s=size(a); for i=1:2:s(1); for j=1:s(2)-1; if(a(i,j)==1) a(i+1,j+1)=1; end; end; end %到此处理完毕>>a

无为县13835121061: MATLAB for循环内if语句判断失败 -
彘是盐酸: 您好,反复看了看语法,没看到什么毛病,a从0.001以增量0.001递增是能够运行到0.01的,然后判断,输出lalala,完成.没看出语句有什么毛病,需要进一步调试查看检查,个人建议您将a的循环变化值存至一个数组里面,看看是否有0.01这个元素,还有就是matlab不建议使用循环语句,能够用矩阵还是优先使用矩阵,谢谢...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网