Matrix 将某些矩阵元素替换为最大值中的零
我试图把一个等于und的矩阵的元素变成零。我尝试用矩阵图来实现这一点,但没有成功:Matrix 将某些矩阵元素替换为最大值中的零,matrix,replace,element,moodle,maxima,Matrix,Replace,Element,Moodle,Maxima,我试图把一个等于und的矩阵的元素变成零。我尝试用矩阵图来实现这一点,但没有成功: und_to_zero(element) := block( [], if ( is( element = und ) then element : 0 ) else ( ) ); Ma : matrix([25,40,0,und,und],[und,und,15,20,20]); MaCalc : copymatrix(Ma); MaCalc: matrixmap(und_to_zero, MaCalc);
und_to_zero(element) := block( [], if ( is( element = und ) then element : 0 ) else ( ) );
Ma : matrix([25,40,0,und,und],[und,und,15,20,20]);
MaCalc : copymatrix(Ma);
MaCalc: matrixmap(und_to_zero, MaCalc);
这会在Moodle上引发检查最大连接错误。我猜问题在于我在函数和_to_zero
的定义中的条件构造,但我不确定我做错了什么
有人能帮我发现错误吗?事实证明,您必须在else
分支中指定要完成的任务:
und_to_zero(element) := block( [], if is( element = und ) then element : 0 else element:element );
我认为实现相同效果的一个更简单的方法是说,MaCalc:subst(und=0,Ma)
该函数可以变得更简洁。(1) 块([],…)
无效,因为函数体中只有一个表达式。(2) if is(…)…
相当于if…
(即is
在if
之后不需要)。(3) 如果
是带有值的表达式,而不是带有副作用的命令。因此无需分配给元素
。全部加在一起:und\u to\u zero(元素):=如果元素=und,那么0 else元素
。