簡體   English   中英

向量作為matlab中的函數輸入?

[英]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));

或者,將AB作為兩個單獨的參數傳遞(從可讀性上講很有意義)應該按照您在問題中描述的方式工作...

我對你的問題有不同的解釋,我想你問的是如何使你的函數輸出兩個(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM