类型如何在MATLAB / Octave中工作?

时间:2013-05-06 21:48:59

标签: matlab types octave

我有一个名为allWords的东西,由于某种原因,我必须使用大括号进行索引:

allWords{1}
ans =

  9x1 struct array containing the fields:

    img
    groundTruth

其中有9个手写字符图像,如果我将每个图像分配给变量:

a=allWords{1}(1).img
b=allWords{1}(2).img
c=allWords{1}(3).img
d=allWords{1}(4).img
e=allWords{1}(5).img
f=allWords{1}(6).img
g=allWords{1}(7).img
h=allWords{1}(8).img
i=allWords{1}(9).img

这样做,然后我可以看到它被切断之前的手写单词。

imshow([a b c d e f g h i])

这比我以前的版本好得多:

# the first word
n=1
l=length(allWords{n})
for i = 1:l, subplot(1,l,i); imshow(allWords{n}(i).img); end;

在图像之间放置了不必要的空格。

然而,它非常难看,我如何概括并简化它?

这看起来很明显,但是哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇

 imshow(allWords{1}.img)

愚蠢的堆。有没有人得到任何提示,找出事物的类型,或找出什么类型将神奇地变成其他类型,什么不会或如何血腥索引工作或任何类型的逻辑解释为什么这整个邪恶的混乱以这种方式结束?

1 个答案:

答案 0 :(得分:1)

尝试:

img = cat(2, allWords{1}(:).img);
imshow(img)

一些解释:

allWords是一个单元格数组。就你所展示的而言,它至少包含一个元素。

第一个元素allWords{1}是一个大小为9x1的结构数组(即每个元素都是结构的数组)。每个结构都有两个字段imggroundTruth

现在,当您访问allWords{1}.img时,这将返回以逗号分隔的列表,该列表基本上会扩展为x1,x2,...。因此我们可以将它们组合成一个矩阵[allWords{1}.img],假设大小是兼容的。

最终结果:

imshow([allWords{1}.img])