1

我有一个叫做 allWords 的东西,出于某种原因,我必须用大括号对其进行索引:

allWords{1}
ans =

  9x1 struct array containing the fields:

    img
    groundTruth

其中有九个手写字符的图像,如果我将它们中的每一个分配给一个变量:

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;

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

但是,它非常难看,我该如何概括和简化它?

这看起来是显而易见的事情,但是哇哇哇,还不足以让 Matlab 烂透了:

 imshow(allWords{1}.img)

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

4

1 回答 1

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])
于 2013-05-06T21:53:11.257 回答