[英]vector as function's input in matlab?
我想編寫一個函數,它接收一個2x1矩陣,結合x和y。(沒有標量輸入)是否可能? 我試過如下:
function [d] = dist(A,B)
d=sqrt(((A(1)-B(1))^2+(A(2)-B(2))^2));
end
A和B是2 * 1矩陣。 如何將矢量作為函數的輸入?
如果你想傳遞兩個向量(因為你有A和B,每個有兩個元素)作為單個參數,你可以創建一個2x2矩陣或4x1向量來傳入。或者你可以決定傳入一個單元格數組(這給你更多的靈活性)。 例:
A = [1 2];
B = [4 5];
C = [A; B];
d = myDistance(C);
function m = myDistance(x)
dxy = diff(x); % do both x(2,1) - x(1,1) and x(2,2) - x(1,2) in one operation
m = sqrt(sum(dxy.^2));
或者,將A
和B
作為兩個單獨的參數傳遞(從可讀性上講很有意義)應該按照您在問題中描述的方式工作...
我對你的問題有不同的解釋,我想你問的是如何使你的函數輸出兩個(x,y)坐標列表的所有距離? 如果是這樣的話就像這樣:
function [d] = Dist(A,B)
d=sqrt(((A(:,1)-B(:,1)).^2+(A(:,2)-B(:,2)).^2));
end
因此,您需要將^
從矩陣運算更改為元素向量運算.^
然后您需要訪問第一列但所有行,即(1,:)
例如
A = [0,0;
0,1;
1,1]
B = [1,1;
1,1;
1,1]
Dist(A,B)
ans =
1.41421
1.00000
0.00000
順便說一句,你可以像這樣結束這個功能,但仍然得到相同的結果:
function [d] = Dist(A,B)
d=sqrt(sum((A-B).^2,2));
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.