首页 > 解决方案 > arrayfun 输出的串联

问题描述

假如说

outputTemp =

  2×1 cell array

    {122×1 string}
    {220×1 string}

finalOutput是一个字符串数组 ( 342x1 string)。

有什么办法可以做到以下几点

outputTemp = arrayfun(@(x)someFunc(x), someInput, 'UniformOutput', false)';
finalOutput= [outputTemp{1}; outputTemp{2}];

在一条线上?

对于最小的示例,someFunc可以是一个函数,它提供someInput.

标签: matlab

解决方案


简短的回答:是的。这是一个MWE:

str1 = ["Test";"Test1";"42"]
str2 = ["new test";"pi = 3"]
C = {str1;str2}

ConCatStr = [C{1};C{2}];

这应该回答有关字符串数组连接的问题。请注意,这仅适用于真实字符串(不适用于 char 数组)。很难说你事先在做什么,因为没有关于getFilesFilt()and的细节mainFolderCUBX

为更新的问题编辑MVE

% function that returns a matrix
fnc = @(x)[x,1];
% anonymous function that returns a vector
fnc2 = @(x)reshape(fnc(x),2,1)

tmp = arrayfun(@(x)fnc(x), rand(10,1),'UniformOutput',false)

答:没有合适的方法。但是,您可以做一些摆弄并将所有内容强制放在一行中(使代码变得丑陋且效率低下)

tmp = arrayfun(@(x)fnc(x), rand(10,1),'UniformOutput',false);
out = reshape(cell2mat(tmp),numel(cell2mat(tmp)),1);

只需tmp用它所写的内容替换。


推荐阅读