[已答复] 报错:不支持具有两个要比较的矩阵和一个工作维度的 MAX。这是什么原因呢,我想找出ISx的最值,正确的程序应该是什么呢,有会的小伙伴吗?谢谢j...

[复制链接]
附加值 发表于 2021-11-23 12:17:17
本帖最后由 附加值 于 2021-11-23 12:19 编辑

clear all
N=300;
uf=14;
km=1;
xmin=0;
xmax=2000;
dx=(xmax-xmin)/N;
lmd=0.01;%0.02%注:cfl数是特征线斜率/网格斜率
dt=lmd*dx;
T=30;
x=xmin+(0:N)*dx;
cr=3/16;cc=5/8;cl=3/16;
lamd=3.3;
U=initial(x,N,uf,km);function U=initial(x,N,uf,km)
% U=zeros(1,N+1);   
        for i=1:N+1
            if x(i)>=500&&x(i)<1000
                U(i)= 0.5;
            elseif x(i)>=1000&&x(i)<=1500
                U(i)= 0;
            else
                U(i)= 0.25;
            end
        end
U2=[U(N-3),U(N-2),U(N-1),U,U(2),U(3),U(4)];
ux1=zeros(1,N+2);ux2=zeros(1,N+2);%光滑因子要用5个点
for i=4:N+5%l:j-1,c:j,r:j+1
        ISxr=13/12.*(U2(i)-2*U2(i+1)+U2(i+2)).^2+1/4.*(3*U2(i)-4*U2(i+1)+U2(i+2)).^2;%i+1,IS是振荡指标
        ISxl=13/12.*(U2(i-2)-2*U2(i-1)+U2(i)).^2+1/4.*(U2(i-2)-4*U2(i-1)+3*U2(i)).^2;%i-1
        ISxc=13/12.*(U2(i-1)-2*U2(i)+U2(i+1)).^2+1/4.*(U2(i-1)-U2(i+1)).^2;%i
m=max(ISxr,ISxl,ISxc);
end
m


2 条回复


TouAkira 发表于 2021-11-24 15:45:34
求三个数值中的最大值,要用方括号把它们全括起来,这样三者才被合起来算同一个输入
m = max( [ ISxr, ISxl, ISxc ] )
否则会被当做三个输入,而 max函数 的多个输入是有不同要求的,具体自己去看帮助文档。
请记住,遇到问题第一反应应当是查阅报错提示对应函数的帮助文档,自查语法是否正确。

附加值 发表于 7 天前
TouAkira 发表于 2021-11-24 15:45
求三个数值中的最大值,要用方括号把它们全括起来,这样三者才被合起来算同一个输入
m = max( [ ISxr, ISxl ...

好的,谢谢:victory:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表