7
我想計算矩陣元素的標準推導。所以我首先用命令reshape
將我的矩陣轉換爲一個向量,然後使用std
。Matlab的std在REPL中工作,但不在程序中
但是,我得到了一個錯誤信息:
Error using var (line 59)
First argument must be single or double.
Error in std (line 32)
y = sqrt(var(varargin{:}));
Error in reducenoise2>standabw (line 112)
s = std(B);
Error in reducenoise2 (line 36)
D = standabw(n,m,r,fu,D);
所以我印我的矢量B
,只是將它傳遞給std
之前。我將它分配給REPL中的變量x
,嘗試手動撥打std(x)
。
有趣的是,這工作得很好。
那麼如何調用函數std
–與相同的參數–導致在我的代碼中使用錯誤,但在REPL中正常工作?
這裏是Matlab的功能:
function [D] = standabw(n,m,r,fu,D)
for i = 1+r:n-r
for j = 1+r:m-r
C = D(i-r:i+r,j-r:j+r);
B = reshape(C,(2*r+1)^2,1)
s = std(B);
if s > fu
D(i,j) = 255;
end
end
end
end
這是矢量B
,只是在錯誤消息之前:
B =
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
非常感謝!現在它可以工作。但我仍然不明白爲什麼。你介意解釋一下嗎? – milli
簡單:它期待雙打作爲輸入。 –