使用哈希表 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
只是用户的输入,在本例中为pink
、purple
和yellow
。
%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 创建矩阵的主要内容,如果未能解决你的问题,请参考以下文章