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

提前致谢

4

1 回答 1

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
于 2013-08-22T08:02:16.087 回答