當前位置:編程學習大全網 - 源碼下載 - matlab中遇到問題,sinc(ts(:,ones(size(t))) 不理解,ts括號裏面怎麽解釋。

matlab中遇到問題,sinc(ts(:,ones(size(t))) 不理解,ts括號裏面怎麽解釋。

sinc參考例程中(貌似新版本的文檔裏刪掉了這個程序)

說,用sinc函數與采樣做卷積來重建信號。

代碼如下:

t=(1:10)';

randn('state',0);

x=randn(size(t));

ts=linspace(-5,15,600)';

a=ts(:,ones(size(t)));

b=t(:,ones(size(ts)));

y=sinc(ts(:,ones(size(t)))-t(:,ones(size(ts)))')*x;

plot(t,x,'o',ts,y);

y=sinc(ts(:,ones(size(t)))-t(:,ones(size(ts)))')*x;這句話本質上是在做卷積。

至於為什麽是卷積,妳明白那兩個矩陣是什麽後,根據矩陣乘法,展開就是卷積定義。

分開來看他的矩陣是如何操作的。

a=ts(:,ones(size(t)))設置中間變量保存到工作區就可以看到,列向量ts被擴展成了由size(t)個列向量組成的矩陣,每列與ts相同。

至於為什麽是這樣,我研究了好久,下面結論涉及到面向對象知識,看不懂就算了。

a=ts(:,[1 1]);相當於ones(2)。這樣就是兩列了。

那a=ts(:,[1 2]);呢?位置 2 的索引超出數組範圍(不能超過 1)。

說明數組[1 2]是引索。引索誰呢?引索匿名對象

運算符:作為矩陣類的成員函數返回的壹個矩陣(向量也是矩陣)作為匿名對象。

運算符()作為矩陣類的成員函數,調用他的矩陣應該是匿名對象而不是ts,返回的矩陣是匿名對象矩陣引索[1 1]後的矩陣。

所以ts(:,[1 2])整個函數調用是Matrix_index(Matrix_index(ts,1:size(index)),[1 2])

Matrix_index是我YY的矩陣引索函數,相當於運算符(),第壹個參數是要引索的矩陣,第二個參數是引索矩陣,返回引索後的矩陣。可以看出Matrix_index實際上是返回分割後的矩陣。若引索是壹個數,就可以降低壹個維度。這樣不管多少階張量,都能夠通過Matrix_index引索。

matlab作為超高級語言,是用C++編寫的,突出了面向對象的優勢,封裝,重載,多態,使得編程時只需要考慮抽象的數學,而不需要考慮計算實現細節。

  • 上一篇:028棋牌源代碼
  • 下一篇:深圳有哪些比較有名的IT外資企業
  • copyright 2024編程學習大全網