转自 http://hi.baidu.com/kingmmxtj/blog/item/dfec6bf809bb3a09d8f9fdc2.html
提前说明:matlab中求阶乘的函数是factorial(N);具体用法请help factorial;回归本题:自从用上了matlab,发现最大的问题就是它太智能化了,而更大的问题是我觉得它应该这么智能化......所以最常见的我的错误就是Inner matrix dimensions must agree!拿factorial开刀,我要计算公式as=d!/(s!*(d-s)!)(就是组合d中取s)现初始化代码如下d=7;s=1:1:7;as=factorial(d)/(factorial(s)*factorial(d-s))公式没问题吧?运行、错误!仔细看d是一个只有一个元素7的矩阵,而s是一个1×7的矩阵,我以为matlab会自动扩充元素(如运行reshape)我错了,修改如下:添加定义D=[ d d d d d d d ];把公式中的d由D来代替,ok,运行、出错Matrix dimensions must agree!这可是个经典错误,矩阵响应元素的运算必须全部加dot。再次修改as1=factorial(D)./(factorial(s).*factorial(D-s))这次终于ok了。必须牢记一点:matlab的输入变量是矩阵,参与运算的矩阵维数必须对应!
2010-07-09 15:29 | 回复
2011-03-22 21:03 | 回复