在函数之间传递输出参数,代码不起作用

时间:2013-08-22 08:00:37

标签: matlab function data-structures

我似乎无法将变量从一个函数传递给另一个函数。我已经广泛使用了函数(但我仍然是一个编程新手),所以我可能只是在这里犯了一个愚蠢的错误,但我不能为我的生活找到它!这就是我正在做的事情。

我的第一个功能

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 个答案:

答案 0 :(得分: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