2008年4月23日 星期三

多項式相乘,矩陣分割,輸入.etc

因為最佳控制期中考的原因,需要用到了以上這幾個東西,因此邊學習之餘,就記下來吧,挺實用的~

1. 多項式相乘~~~   用到的指令是 conv  , for example :   (x^2+2x-6)*(2x^2+8x+10)

                  p=cov([1,2,6],[2,8,10]);
當然若有三個相乘的話, for example:
(x^2+2x-6)*(2x^2+8x+10)*(x^3+x+5)

p=conv([1,2,6],conv([2,8,10],[1, ,1,5]));

2.矩陣分割 ~~~   因為matlab 在矩陣方便是先行後列,所以假設一個 4X4矩陣 M 如下

                           1 2 3 4
                           5 6 7 8
                           9 0 1 2
                           3 4 5 6
若要分割成新的 2x2的矩陣W
所以W11=  1 2
                     5 6      
w11= m(1:2,1:2)               % 先行後列, 所以第一個1:2代表取行的第一個和第二個,第二個1:2就是                                                  取列的第一個和第二個

W12=  3 4
              7 8
w12=m(1:2,3:4)

W21=   9 0
              3 4
w21=m(3:4,1:2)

W22=  1 2
             5 6
w22=m(3:4,3:4)

這樣就可以把4x4矩陣轉換成2x2了.

3. 輸入字串 轉數值~~~   這個第一次使用是在上影像處理的時候,要輸入將圖片轉角度時用到的
這次作業我是想要自己輸入 2x2 A 矩陣的值,所以就用來試試,我想應該有更好的方法,但是目前我只會這種...這邊指舉範例,詳細內容要看 matlab help,做法如下:

% 輸入二階 A MATRIX 數值
def={'1'}        % 其實不知道為什麼要打這行,只知道不打的話就不會成功...
stra=inputdlg('a11','input A matrix',1,def);  % inputdlg 就是他的指令,詳細請看matlab help
strb=inputdlg('a12','input A matrix',1,def); % 這個指令是將我們輸入的東西當成字串來看
strc=inputdlg('a21','input A matrix',1,def); %因此下面需要用到一個字串轉數值的指令
strd=inputdlg('a22','input A matrix',1,def);
a11=str2num(stra{1});                                  % str2num字串種成數值
a12=str2num(strb{1});
a21=str2num(strc{1});
a22=str2num(strd{1});
a=[a11 a12;a21 a22]                                     % 之後我在 asign 到我要的矩陣類型裡面就完成了

我想應該有個可以直接就輸入數值的指令,只是我沒找,下次再找找看吧,不然就不用這麼麻煩了
但是這方法其實應該可以通殺任何要輸入符號數字或字母的程式吧 ^^

沒有留言: