2013-08-22 87 views
1

我似乎無法將一個函數的變量傳遞給另一個函數。我已經使用了相當廣泛的功能(但我仍然是一個編程新手),所以我可能只是在這裏犯了一個愚蠢的錯誤,但我不能在我的生活中找到它!這就是我正在做的。在函數之間傳遞輸出參數,代碼不工作

我的第一個功能

function [ ToFparam ] = ToF_3D_Viewer(ToFparam, RGBparam, Naviparam, DICOMparam) 
    ToF_2_DICOM_Coords(ToFparam,Naviparam,DICOMparam); 
    disp(ToFparam.ROI.XYZ_DICOM); %says it's a non-existent field! 
end 

我的第二個功能

function [ ToFparam ] = ToF_2_DICOM_Coords(ToFparam, Naviparam, DICOMparam) 
    Naviparam.Endotip_2_Tracker = diag([1,-1,-1,1]); 
    [m,n,z]=size(ToFparam.ROI.XYZ); 
    ToFparam.ROI.XYZ_DICOM=reshape(inv(Naviparam.data.Endo_RefHomMat(1:3,1:3))*inv(Naviparam.Endotip_2_Tracker(1:3,1:3))*(reshape(ToFparam.ROI.XYZ,[m*n z]))')',[m n z]); 
    disp(ToFparam.ROI.XYZ_DICOM) %outputs correctly! 
end 

我也試圖改變我的第一個功能以下,但是當我後來嘗試添加ToFparam.ROI.XYZ_DICOM相同大小的另一個矩陣,它在我的ToF_2_DICOM_Coords函數中明確地輸出爲矩陣,它會拋出一個錯誤,說我不能添加「結構」類型的變量

function [ ToFparam ] = ToF_3D_Viewer(ToFparam, RGBparam, Naviparam, DICOMparam) 
    ToFparam.ROI.XYZ_DICOM = ToF_2_DICOM_Coords(ToFparam,Naviparam,DICOMparam); 
    disp(ToFparam.ROI.XYZ_DICOM); %says it's a non-existent field! 
end 

在此先感謝

回答

1

你應該要求在您選擇函數調用ToF_2_DICOM_Coords返回值,

function [ ToFparam ] = ToF_3D_Viewer(ToFparam, RGBparam, Naviparam, DICOMparam) 
    Tofparam = ToF_2_DICOM_Coords(ToFparam,Naviparam,DICOMparam); 
    disp(ToFparam.ROI.XYZ_DICOM); %says it's a non-existent field! 
end 
+1

謝謝,知道這是愚蠢的東西一樣,= P。我認爲這個問題是在創紀錄的時間內提出並解決的 – spaderdabomb