使用java生成repmat()方法

时间:2016-05-16 06:29:13

标签: java matlab

我们在matlab中使用<select id="questionnaire_domain" class="form-control sync-option-text required" name="questionnaire_domain"><option value="ESS">Employee Satisfaction Survey</option><option value="CSS">Customer Satisfaction Survey</option><option value="VSS">Vendor Satisfaction Survey</option><option value="OQ">Orientation Quiz</option><option value="TQ">Training Quiz</option><option value="EI">Exit Interview</option><option value="EO">Employee Opinion</option></select> <input class="form-control readonly" name="questionnaire_code" type="text" value="" id="questionnaire_code" readonly="">方法生成一种格式: repmat(arr,2,1,2)

arr = [6,3,9,0];

我尝试生成相同格式的java代码是

 L(:,:,1) =
 6 3 9 0 
 6 3 9 0

  L(:,:,2) = 
  6 3 9 0 
  6 3 9 0

java代码的结果是:

  

[[6,6],[3,3],[9,9],[0,0]],[[[6,6],[3,3],[9,9],[ 0,0]] ???

请提出任何建议

2 个答案:

答案 0 :(得分:0)

我相信depth参数会导致数组中的每个值都有两个值(int[][][] result = new int[rows][resultColumns][depth];会变为(给定输入行= 2,列= 1和深度= 2以及初始数组) 4)new int[2][1][2])。

不完全确定repmat方法究竟应该做什么,可能是将数组的创建更改为int[][][] result = new int[depth][rows][resultColumns];可以解决问题。

答案 1 :(得分:0)

我想这是因为MATLAB使用column-major indexing而Java使用Iliffe vectors。因此,MATLAB使用单个连续的内存块存储多维向量,其中Java存储指针数组,每个指针指向另一个数组。

很难确切地说出代码导致的Java数据结构是什么。您是否认为可能更喜欢从调试器发布屏幕截图?你现在拥有的东西看起来不正确,括号甚至不匹配。

虽然猜测,我建议你改变这一行

result[r][c][d] = array[z++];

更喜欢

result[d][r][c] = array[z++];

或者甚至可能将内循环改为

for (int c = 0; c < columns; c++) {
    result[d][r][c] = array;
}