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...