有人可以解释一下Matlab中的以下代码是做什么的吗?
S = max(Smax/1e6,S);
Smax是标量,S是二维数组。
在文档中它说:" C = max(A,B)返回一个与A和B大小相同的数组,其中最大元素取自A或B.A和B的维度必须匹配,或者它们可能是标量。"
但我真的不明白。例如,当我查看数据时: Smax = 18.8919然后如果表格单元格= 0,如果表格单元格= 1.26794177568026,它将被1.88918608566891e-05替换,然后它被0.2374替换。为什么会这样?
Matrix之前:
0 0 0 0 0 0.00111506400432957 0.0530528652679544 0.0735632798530057 0.337940336906895 0.217390264464039 0.842200681286881 0.441492820596403 0.635889579407697 0.0282173990214626 0.628686747522517
0 0 0 0 0 0.00124231354963584 0.0292268862938039 0.307854738413881 0.642250450652130 0.895774237272530 0.955937999893653 1.02416313393959 1.43102268912588 1.28612042237543 0.854476003698339
0 0 0 0 0 0.00161382073055088 0.211968938444796 1.14984433303987 1.79814921306101 1.21125341085802 0.730742783435531 0.783994053903355 2.16496222396151 1.37726874308377 0.566007297543274
0 0 0 0 0 0.00219642315401969 0.333759445110180 1.41975817872937 2.93443500804371 0.423882373725561 1.72297295599714 2.10661511095899 1.23659139050992 0.299608689818999 1.27117497124802
0 0 0 0 0 0.00293437095181858 0.170826340853254 0.505706488974208 3.09277881791955 1.01375749953753 2.72388777599623 2.14043273302288 1.97540038269762 1.36646318061577 1.31241005396504
Matrix after:
1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05
1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 0.0238758244166261 0.358389355882494 0.251630262469816 1.88918608566891e-05
1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 0.139626570638794 0.586757920960373 0.191655700200727 1.88918608566891e-05 1.88918608566891e-05 0.772402912785602 0.320102366342357 1.88918608566891e-05
1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 0.350486560441589 1.07651493323094 1.88918608566891e-05 0.544051261541669 0.745082446545145 0.212358715890953 1.88918608566891e-05 0.239941646971664
1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.88918608566891e-05 1.12906998061232 0.0136637242376597 1.00206018919932 0.761008020284666 0.680771103223579 0.312225781724240 0.271865182822984
答案 0 :(得分:4)
首先,通常的做法是将标量变量作为矩阵的第二个参数,使其更容易阅读。
为了说明这应该如何工作,我会给你一些代码:
R = [0 1; 2 3];
Smax=1;
S=max(R,Smax)
% At this point, S will be equal to [1 1; 2 3];
将会发生的事情是,Smax以下的任何值都将被Smax取代。
实际上,这更像是最小值,即最小值是Smax。
至于你的具体问题,我可以获得更多信息,但我需要在你提供的声明之前和之后看看矩阵的样子。