我有一个单元格f{k}
,其中包含k
个矩阵,其中k=1:96
。对于每个k
,矩阵具有不同的长度。例如length(f{1})==13
和length(f{96})==80
。另外,我还有另一个W{k}
小区k=1:96
。同样,对于每个k
,矩阵具有不同的长度。例如length(W{1})==49
和length(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
),其中应包含W
和f
的索引。例如,如果我想要M(1)
,我应该获得大小为f{1}*W{1}
的矩阵。请注意,f{1}
和W{1}
具有不同的长度,并且对于每个k
,新矩阵将由不同的长度组成。
我该怎么做?
答案 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).');