>>> x =[1, 2, 3]
>>> y = x'
>>> x+y
ans =
2 3 4
3 4 5
4 5 6
這裡matlab也會對不同size的矩陣之間進行broadcast操作:
x size == 1 * 3
y size == 3 * 1
result size == 3 * 3
對x在列的方向多複製二行,對y在行的方向多複製兩列
1, 2, 3
1, 1, 1, 2, 3, 4
1, 2, 3 + 2, 2, 2, = 3, 4, 5
1, 2, 3
3, 3, 3
4, 5, 6
在**標準高斯函式時:
x =-5:.01:5;
plot(x, gauss(x))
也就是需要gauss()
函式接受向量類資料:
function
[y] = gauss
(x)y = 1/sqrt(2*pi)*exp(-x*x/2)
執行第一段**會提示如下錯誤:
錯誤使用 *
內部矩陣維度必須一致。
x
是向量型別,也即是一種特殊的矩陣,乘法運算要符合矩陣運算規則,在matlab中對*
和.*
有著嚴格的區分。前者*
要符合矩陣乘法的運算,也即左運算元的列==右運算元的行,後者是按位相乘運算(element-wise),元素的個數相等即可。
顯然此時的gauss()
函式可做如下的修改:
建立影象塊組成的矩陣,逐點遍歷其r×
r 鄰域時,為後續處理的方便(matlab環境下的介面往往以列的方式實現),應以列序優先,按列遍歷。
i = imread('./lena.png');
[m, n] = size(i);
r = 5; sz = floor(r/2);
i_pad = padarray(i, [sz, sz], 'symmetric', 'both');
% 映象填充,避免邊緣的影響
p = zeros(m*n, r^2);
idx = 1;
forj = (sz+1):(n+sz),
fori = (sz+1):(n+sz),
t = i_pad(i-sz:i+sz, j-sz:j+sz);
t = t(:)';
p(idx, :) = t;
idx = idx+1;
endend
C 一些細節
include include pthread.h using namespace std static pthread mutex t mutex class single class single public static single instance static single getin...
一些Java程式設計上的小細節
1 使用 stringbuilder 拼接字串時,將單個拼接的標點符號用單引號,作為 char 型別的入參傳入。public string tostring if contentencoding null final long len getcontentlength if len 0 return...
C 高階程式設計的一些細節問題
引用的本質 常量指標。資料型別 const 變數名,如int const p。對於常量指標,不能修改指標指向,可修改指向的內容。用引用的操作可以直接修改實參 作用 函式名可以相同,提高復用性。函式過載滿足條件 在c 中,struct和class都可以表示乙個類,唯一的區別就在於預設訪問許可權不同。區...