从两个多维单元格创建多维矩阵

时间:2018-02-08 13:47:39

标签: matlab matrix vector size cell

我有一个单元格f{k},其中包含k个矩阵,其中k=1:96。对于每个k,矩阵具有不同的长度。例如length(f{1})==13length(f{96})==80。另外,我还有另一个W{k}小区k=1:96。同样,对于每个k,矩阵具有不同的长度。例如length(W{1})==49length(W{96})==65

以下是单元格f的输出,对于单元格f的前9个元素:

第1至9栏

  [13×1 double]    [24×1 double]    [36×1 double]    [43×1 double]    [48×1 double]    [65×1 double]    [81×1 double]    [95×1 double]    [107×1 double]

同样,以下是单元格W的输出,代表W的前9个元素:

第1至9栏

  [1×49 double]    [1×49 double]    [1×49 double]    [1×48 double]    [1×47 double]    [1×49 double]    [1×49 double]    [1×48 double]    [1×47 double]

现在,对于每个k=1:96,我想创建一个矩阵(比如说M),其中应包含Wf的索引。例如,如果我想要M(1),我应该获得大小为f{1}*W{1}的矩阵。请注意,f{1}W{1}具有不同的长度,并且对于每个k,新矩阵将由不同的长度组成。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,可以使用/tmp/ccEMHPHa.o: In function `main': main.cpp:(.text+0x46): undefined reference to `cv::imread(cv::String const&, int)' /tmp/ccEMHPHa.o: In function `cv::String::String(char const*)': main.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x58): undefined reference to `cv::String::allocate(unsigned long)' /tmp/ccEMHPHa.o: In function `cv::String::~String()': main.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): undefined reference to `cv::String::deallocate()' /tmp/ccEMHPHa.o: In function `cv::Mat::~Mat()': main.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)' /tmp/ccEMHPHa.o: In function `cv::Mat::release()': main.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x4b): undefined reference to `cv::Mat::deallocate()' collect2: error: ld returned 1 exit status 完成此操作。这是一个演示:

cellfun

c1 = {[1;1;1],[1;1;1;1;1],[1;1]}; % {3×1} {5×1} {2×1}
c2 = {[1,2],[1,2,3],[1,2,3,4,5]}; % {1×2} {1×3} {1×5}
out = cellfun(@times,c1,c2,'UniformOutput',false);

如果您只想要尺寸,您可以执行以下操作:

out =

  1×3 cell array

    {3×2 double}    {5×3 double}    {2×5 double}

M = cell2mat(cellfun(@(x,y)[size(x,1) size(y,2)],c1,c2,'UniformOutput',false).');
相关问题