作者kusobike ()
看板MATLAB
标题Re: [运算] function 输入的判断
时间Tue Nov 20 21:07:31 2012
※ 引述《JamesChen ( )》之铭言:
: 如果 function 是 长得像
: function fval = f(x)
: fval = exp(x)*2
: 那丢入的 x 是 scalar 就会传出 scalar
: 是 matrix 就会是 element by elment 的 matrix
: 我想问的是如果 function 长得像是
: function fval = f(x)
: fval = sum (x*randn(6,1))
: 显然丢 scalar 还是可以运作
: 但是丢 matrix 程式就会告诉你说矩阵维度不对 (除非刚好对)
: 除了重写function外 有没有办法让他也变成 element by elment 的计算结果呢?
: 比如说跟 MATLAB 宣告 if size(x) ~= 1 怎样怎样的
: 感谢回答
: 这问题困扰我很久了...
: 目前都只能徒法炼钢 用 for loop 带入值
斯斯有三种,矩阵相乘有两种
1. matrix to matrix
A[m][n]*B[n][m] or A[J][J]*B[J][J]
2. element to element
A[m][n].*B[m][n] = A(i,j)*B(i,j)
但是维度要一样,这样才能一个萝卜一个坑
施主的问题在於 fval = sum(x*rand(6,1)) 这一行
即使改为 x.*rand(6,1),满足 element to element operator
但是矩阵A的维度必须是6*1
假设 fval 是设计给二维矩阵A
那要先用 size 读取 A 之row numbers与column numbers,分别为m,n
再套入 fval = sum(x.*rand(m,n))
这样才能满足施主说的通则(用於2D matrix)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.218.131