使用哈希表 MATLAB 创建矩阵

Posted

技术标签:

【中文标题】使用哈希表 MATLAB 创建矩阵【英文标题】:Create matrix using hashtable MATLAB 【发布时间】:2013-08-14 10:44:57 【问题描述】:

我在 MATLAB 中使用哈希表 (containers.map),现在我想使用该信息创建一个矩阵。因此,当我运行我的哈希表,然后为每种类型插入我的文本文件时,我会在我的命令窗口中看到类似这样的内容:

编辑

F = listdlg('PromptString','Different types', 'SelectionMode',...
    'single', 'ListString',E, 'Name','Select a type','ListSize',[230 130]);

        [files,path] = uigetfile ('*.txt','Select your text files',...
            'MultiSelect','on');

其中E 只是用户的输入,在本例中为pinkpurpleyellow

%save for each type the user enters the corresponding text files he
            %wants to train
            %A Map object is a data structure that allows you to retrieve values 
            %using a corresponding key. Keys can be real numbers or text strings
            %and provide more flexibility for data access than array indices, 
            %which must be positive integers. Values can be scalar or nonscalar arrays.



handles.map (E(F,:)) = files;
handles.map
a = handles.map.values
b = handles.map.keys
handles.map.size
b = 

    1x3 cell    1x6 cell    1x4 cell


a = 

    'pink  '    'purple'    'yellow'

所以我现在想将 b 的总数作为我的矩阵 m 上的行数;所以总行数 14 和来自a 的每一位是一列;所以一共有3列。但我想创建一个二进制矩阵,其中每列将标识不同的类型。最后我将创建一个这样的矩阵:

  m =[1 0 0
     1 0 0
     1 0 0
     0 1 0
     0 1 0
     0 1 0
     0 1 0
     0 1 0
     0 1 0
     0 0 1
     0 0 1
     0 0 1
     0 0 1];

矩阵的前 3 行表示有 3 个 pink 类型的文本文件,接下来的 6 行:6 个 purple 类型的文本文件,最后 4 行:4 个 yellow 类型的文本文件。

我希望现在更清楚了。 :)

任何帮助将不胜感激! :) x

【问题讨论】:

还不完全清楚;您能否更详细地解释您的 Map 中的键和值是什么?如果您可以创建一个最小的工作示例,在其中使用值填充 Map,然后解释您想要的输出,那将是最好的。 谢谢..我刚刚编辑了它,我希望我现在更清楚了:) 【参考方案1】:

所以是这样的?

val = cellfun(@length, b)';

m = 0;
for v = 1:size(val)
  m(end:end+val(v)-1,v) = 1;
end

【讨论】:

@Chrysovalando 等等...我以为你说b 是你的输入,m 是你想要的输出?不是这样吗 是的,就是这样..但是当我在我的代码中使用它时,我只会得到一列 1 但如果我按原样运行它,我会得到我想要的..所以可能我有一些东西我的代码疯了:/ 请看我的原帖 :) @Chrysovalando 尝试转置我原来的val calc,看看我的编辑

以上是关于使用哈希表 MATLAB 创建矩阵的主要内容,如果未能解决你的问题,请参考以下文章

powershell 矩阵使用哈希表

蓝书《哈希与哈希表》——知识整理

哈希表中图形的表示

数据结构 哈希表建立

简单易懂数据结构之哈希表

程序员,你应该知道的数据结构之哈希表