小编Ste*_*wDK的帖子

Matlab地图有多个键或嵌套

目前我正在试图取决于在一个月内的一些数据映射'Month','week','day'.

这意味着原则上我有三个键.我想到了解决问题的方法:

1)

containers.Map(month,containers.Map(week,containers.Map(day,value)))

这个解决方案的问题是引用它我必须使用:如何在不首先将其分配给局部变量的情况下索引函数返回的MATLAB数组?.

我发现这个解决方案相当"丑陋".

2)

另一种方法是使用Map带有多个键的方法.该容器文档显示,仅一维键是允许的.

题:

你有什么技巧可以解决这个多重关键问题吗?

更新/解决方案:

我最后使用串联字符串作为键(如建议的那样)我添加了以下代码片段以使其containers.Map成为正确的多维散列映射.看看下面(为了简化我排除了一周):

classdef example
properties
    myMap % Map for storage
end

methods

function obj = example()
        obj.myMap = containers.Map;
end

function obj2 = setVal(obj2,value,Month,DayType)
        key = strcat(num2str(Month),'-',num2str(DayType));
        obj2.myMap(key) = value;
    end

    function value = getValue(obj,Month,DayType)
        key = strcat(num2str(Month),'-',num2str(DayType));
       value = obj.myMap(key);
    end

end
Run Code Online (Sandbox Code Playgroud)

matlab containers

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

是否可以在JAVA中的ArrayList <double [] []>中存储double [] []数组?

我一直在思考这个问题.我需要一个可以接收一些double[][]数组的类,然后存储这个数组以备将来使用.我能想到的是存储唯一的存储选项double[][]ArrayList<>()double[][]的.

我确实按如下方式实现:

public class AddToArray {
    public String[] parameterNames;
    public ArrayList<double[][]> parametersToChange;    

public AddToArray(String[] parameterNames){
    this.parameterNames = parameterNames;
}

public void addToArray(double[][] parametersToChange) throws InsufficientInputException     

    for(int i = 0; i < parametersToChange.length; i++){
        if(parametersToChange[i].length != this.parameterNames.length)
            throw new InsufficientInputException("DATA DIMENSION MISMATCH");
    }
    // This below gives nullpointexception.
    this.parametersToChange.add(parametersToChange);

}
Run Code Online (Sandbox Code Playgroud)

我打电话给这个例子:

        double[][] parametersToChange = {{0.005,0.006},{0.007,0.008}};
    String[] par = {"SI1","SI2"};
    AddToArray abc = new AddToArray(par);
    abc.addToArray(parametersToChange);
    System.out.println(abc.parametersToChange.get(0)[0][0]); // this would (in my ideal world) …
Run Code Online (Sandbox Code Playgroud)

java arrays double arraylist

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

当输入为double时,使用HashMap的NullPointerException <Integer,Double>

简介
我在弄清楚是什么导致我在HashMap中获得NullPointerException时遇到了一些困难,这应该是相当简单的.要理解为什么我使用HashMap,我认为描述它的最好方法是说我有一个多线程程序,它有一些我想要存储的结果.在那个上下文中,我创建了一个名为的类SaveMethod,用于存储进程中的值.因为我永远不知道哪个线程将首先完成,所以我使用a HashMapi在这个hashmap中存储线程的值,如下所示:

代码:
首先是HashMap的定义:

// The first Integer element is the thread index, the second is the Double value
private static HashMap<Integer,Double> AUC = new HashMap<Integer,Double>();
Run Code Online (Sandbox Code Playgroud)

然后我调用这个方法,一个线程终止存储:

public static void setAUC(double AUC,int i){        
    Double AUCtemp = AUC;
    SaveMethod.AUC.put(i,AUCtemp);
}
Run Code Online (Sandbox Code Playgroud)

更多描述:
现在,我已经通过以下方式成功实现了上述功能:

private static HashMap<Integer,Double[]> AUC = new HashMap<Integer,Double[]>();
Run Code Online (Sandbox Code Playgroud)

也就是说,与前面的例子相比,Double[]而不是Double.这非常有效.

问题
我的问题有两个:1)Exception in thread "main" java.lang.NullPointerException当我尝试调用此代码时,为什么会收到:

    public static Double getAUC(int i){
        double AUC = SaveMethod.AUC.get(i);
        return AUC;
    }
Run Code Online (Sandbox Code Playgroud)

2)这个保存选项线程安全吗? …

java multithreading nullpointerexception

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

Waitbar导致许多数字打开 - MATLAB

所以,我创建了一个MATLAB脚本,需要几分钟才能执行.我决定在这里添加一个与文档相对应的等待栏:http://www.mathworks.se/help/matlab/ref/waitbar.html

我把它定义如下:

function crazyfunction4you();

h = waitbar(0,'Setting up...')

for i =1:N
    waitbar(i/N,'Loading...')
 %Some calculations is going on here

end

close(h);

end
Run Code Online (Sandbox Code Playgroud)

不知何故,这是打开一个数字的数字最终崩溃我的机器.我发现这种奇怪,因为我希望只出现一个数字:

在此输入图像描述

我有兴趣听到你们有类似经历的天气吗?

matlab

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