Re: [運算] function 輸入的判斷
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):