我需要通过字符串索引访问数据,如table('one')%返回1.MATLAB中是否有这样的数据结构?它是如何实现的?
可能重复:
MATLAB中的哈希表
有没有办法在Matlab中获取hashset或hashmap结构?
我经常发现自己处于需要查找唯一条目或检查向量成员资格并使用命令unique()或逻辑索引的情况下搜索向量并且对于大型值集合来说非常慢.在Matlab中执行此操作的最佳方法是什么?
比如说,我有一个素数列表,并想检查3是否为素数:
primes = [2,3,5,7,11,13];
if primes(primes==3)
disp('yes!')
else
disp('no!')
end
Run Code Online (Sandbox Code Playgroud)
如果我用长向量做这个,很多时候事情变得很慢.
所以基本上,是否有任何等效的python set()和dict(),或类似的Java java.util.HashSet和java.util.HashMapMatlab?如果没有,有没有什么好的方法在大型向量中进行查找?
这是我在答案中得到建议的运行时间.
>> b = 1:1000000;
>> tic; for i=1:100000, any(b==i);; end; toc
Elapsed time is 125.925922 seconds.
s = java.util.HashSet();
>> for i=1:1000000, s.add(i); end
>> tic; for i=1:100000, s.contains(i); end; toc
Elapsed time is 25.618276 seconds.
>> m = containers.Map(1:1000000,ones(1,1000000));
>> tic; for i=1:100000, m(i); end; toc
Elapsed time …Run Code Online (Sandbox Code Playgroud) 我试图将Maia包中的一些matlab代码转换为可与Octave一起使用的代码.我目前正陷入困境,因为其中一个文件有几个调用containers.Map,显然这些调用尚未在八度音程中实现.有没有人有任何想法可以轻松实现类似的功能,而无需在八度音程中完成大量的额外工作?谢谢大家的时间.
function [adj_direct contig_direct overlap names longest_path_direct...
weigth_direct deltafiles deltafiles_ref ReferenceAlignment ...
contig_ref overlap_ref name_hash_ref] = ...
assembly_driver(assemblies,ref_genome,target_chromosome, ...
deltafiles_ref,contig_ref, overlap_ref, ...
name_hash_ref, varargin)
% ASSEMBLY_DRIVER Combines contig sets into one assembled chromosome
%
% INPUT
% assemblies
% ref_chromosome
% Startnode_name
% Endnode_name
% OPTIONAL DEFAULT
% 'z_weigths' [.25 .25 .25 .25]
% 'clipping_thrs' 10
% 'ref_distance' -10
% 'ref_quality' 1E-5
% 'max_chromosome_dist' 100
% 'quit_treshold' 15
% 'tabu_time' 3
% 'minimum_improvement' -inf …Run Code Online (Sandbox Code Playgroud) 我在MATLAB中使用Java HashMap
h = java.util.HashMap;
Run Code Online (Sandbox Code Playgroud)
虽然字符串,数组和矩阵与它无关
h.put(5, 'test');
h.put(7, magic(4));
Run Code Online (Sandbox Code Playgroud)
结构没有
h=java.util.HashMap;
st.val = 7;
h.put(7, st);
??? No method 'put' with matching signature found for class 'java.util.HashMap'.
Run Code Online (Sandbox Code Playgroud)
什么是使它适用于结构的最简单/最优雅的方法?
我想知道 MATLAB 中是否有一种方法可以像 Python 一样创建字典。
我有几个端口名称和端口类型,我想创建一个像这样的字典:
dict = {PortName : PortType, PortName : PortType, ...}
Run Code Online (Sandbox Code Playgroud) 是否可以重载subsref并subsasgn允许非整数类型的索引值?
h = Hash; #% a custom hash class to manage my data
h(100) = 'data'; #% integer is fine, if index > 0
h{'string'} #% but this fails
??? Cell contents reference from a
non-cell array object.
Run Code Online (Sandbox Code Playgroud)
可以用某种方式破解它吗?
有几个烦恼containers.Map,可以通过创建一个继承它的自定义类来解决:
classdef Hash < containers.Map
# fun
end
Run Code Online (Sandbox Code Playgroud)
在这样的类中,可以为用户操作实现各种类型的键(不仅仅是一个!!)和便利方法.此外,还可以重新定义subsref和subsasgn使用花括号和多个索引.太好了!
我有以下内容:
d = [1 2 3 4 5 6 7]
我希望Matlab通过循环或为每个数字指定一个日期名称
任何合适的方法如下:
1 =周二
2 =星期三
.
.
.
7 =周一
我打算在运行程序后得到的结果是:
Matlab窗口要求用户输入1到7之间的数字
n =('输入1到7之间的数字')
然后,
如果我们输入例如4,这意味着打印结果是:星期五
要么
如果我们输入例如7,则表示打印结果为:星期一
等等
有没有办法做到这一点
问候