Matlab的函式中如何實現按引用傳遞引數

2021-06-22 04:56:31 字數 1105 閱讀 9750

matlab的函式中如何實現按引用傳遞引數?

-- by benbenknight

matlab中函式的引數都是採用按值傳遞的方式,沒有按引用傳遞的方式,這讓c++程式設計師很不習慣,很多時候我們可能會需要「在函式內實際

修改引數的值」,尤其在當傳入引數是乙個類或結構體時。

幾經摸索,總算被俺發現了一種可以替代的方法,就是讓函式的引數同時作為同名返回值(實際上不一定非得同名,同名是為了**理解起來

方便),這樣便可實現「在函式內部修改引數,外部引數的實際值也會發生變化」的功能。

下面是乙個小例子。

檔案test.m的源**如下:

function test

% 測試函式

disp('按值傳遞引數,呼叫函式後,應有p=1');

p=1;

parameter_by_value(p);

disp(p);    % p=1

disp('按引用傳遞引數,呼叫函式後,應有p=2');

p=parameter_by_reference(p);

disp(p);    % p=2

disp('按引用傳遞引數,呼叫函式後,應有p1=2, p2=4, p3=6');

p1=1;

p2=2;

p3=3;

[p1,p2,p3]=multi_parameter_by_reference(p1,p2,p3);

disp([p1 p2 p3]);

%---- 以下為幾個子函式 ----------------

function parameter_by_value(p)

% 按值傳遞引數

% 函式內部改動引數p,函式外p的值應該不變

p=2*p;

function p=parameter_by_reference(p)

% 模擬按引用傳遞引數

% 函式內部改動引數p,函式外p的值也會變。

p=2*p;

function [p1,p2,p3]=multi_parameter_by_reference(p1,p2,p3)

% 模擬按引用傳遞多個引數

p1=2*p1;

p2=2*p2;

p3=2*p3;

Matlab中如何加入函式

如何將libsvm加入到matlab函式庫中 1 在matlab中命令視窗中pathtool,出現以下視窗 2 選擇你所加入的是資料夾還是子資料夾,加入後儲存即可。在matlab中加入斷點的方法 在matlab中按f12加入斷點 按f5可以執行到斷點出 按f10n單步執行 按f11進入函式內部執行 ...

Matlab中函式如何定義

matlab支援多輸入多輸出,函式的返回值可以為乙個向量,矩陣,或者多個元素。為了讓函式可以呼叫,需要對函式進行命名。function 輸出變數 函式名稱 輸入變數 即包含 輸入引數 輸出引數 函式名 注釋 函式體 如圖 回到主視窗,在command window中,輸入test 3,4 也就是輸入...

Matlab中如何建立類函式?

今天偶然發現了matlab可以像python一樣,有類函式的概念。具體這麼做 假設現在需要設計乙個數學計算類,類下面可以自己定義加減乘除,然後呼叫這個類實現混合運算。定義類函式 function m my math m.add my add m.del my del m.mult my mult m...