matlab 程式設計 一些細節 常犯錯誤的彙總

2021-07-06 07:26:20 字數 1756 閱讀 8253

>>> 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都可以表示乙個類,唯一的區別就在於預設訪問許可權不同。區...