2

所以我在 C# 中有这个对象,它将包含整数和布尔值(双精度和逻辑)

object[,] matrixData = new object[iDimensions[0], iDimensions[1]];

我将它传递给matlab:

matlab.PutWorkspaceData("matrixData", "base", matrixData);

Matlab 将其视为数组的单元数组。这很不方便,因为我现在不能将这些值用于任何事情。我想我需要将它们转换成一个数字数组——尽管事实上我会更乐意保留强类型并且只是丢失每个单元格中的数组。

因此,例如:

temp = cell(1,4)

temp{1,1} = [0.5]
temp{1,2} = [1==1]
temp{1,3} = [7424.356]
temp{1,4} = [31]

我想拥有:

output = [0.5, 1==1, 7424.356, 31]

所以我目前的实现非常粗鲁:

cellfun(@decellify,CashFlowBasisMatrixData);

在哪里

function decellified = decellify(object)

if  isa(object,'logical')
    decellified = +object;
end

if  isa(object,'float')
    decellified = object;
end    

if  isa(object,'char')
    decellified = -2;
end

end

有没有更好的办法?如果我在 C# 中转换为双精度,我如何“取消数组”每个元素?

谢谢,NT

4

0 回答 0