相关疑难解决方法(0)

如何在MATLAB中使用哈希表(字典)?

我需要通过字符串索引访问数据,如table('one')%返回1.MATLAB中是否有这样的数据结构?它是如何实现的?

matlab

32
推荐指数
2
解决办法
5万
查看次数

有没有办法在matlab中使用hashtables/hashmaps?

可能重复:
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.HashSetjava.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)

matlab data-structures

15
推荐指数
1
解决办法
1万
查看次数

将Matlab转换为Octave是否有容器.地图相当于?

我试图将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 hashtable hashmap octave

11
推荐指数
1
解决办法
6386
查看次数

在Java对象中存储MATLAB结构

我在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)




什么是使它适用于结构的最简单/最优雅的方法?

java matlab hashmap

8
推荐指数
2
解决办法
8430
查看次数

像在 Python 中一样创建 MATLAB 字典

我想知道 MATLAB 中是否有一种方法可以像 Python 一样创建字典。

我有几个端口名称和端口类型,我想创建一个像这样的字典:

dict = {PortName : PortType, PortName : PortType, ...}
Run Code Online (Sandbox Code Playgroud)

matlab dictionary

3
推荐指数
3
解决办法
7422
查看次数

在MATLAB中重载运算符以模拟散列数组

是否可以重载subsrefsubsasgn允许非整数类型的索引值?

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)

在这样的类中,可以为用户操作实现各种类型的键(不仅仅是一个!!)和便利方法.此外,还可以重新定义subsrefsubsasgn使用花括号和多个索引.太好了!

indexing hash matlab operator-overloading

1
推荐指数
1
解决办法
687
查看次数

我们如何为数字分配字母

我有以下内容:

d = [1 2 3 4 5 6 7]

我希望Matlab通过循环或为每个数字指定一个日期名称

任何合适的方法如下:

1 =周二

2 =星期三

.

.

.

7 =周一

我打算在运行程序后得到的结果是:

Matlab窗口要求用户输入1到7之间的数字

n =('输入1到7之间的数字')

然后,

如果我们输入例如4,这意味着打印结果是:星期五

要么

如果我们输入例如7,则表示打印结果为:星期一

等等

有没有办法做到这一点

问候

matlab

0
推荐指数
1
解决办法
3571
查看次数