【问题标题】:Fortran data declaration, MATLAB translationFortran 数据声明,MATLAB 翻译
【发布时间】:2017-03-25 22:32:17
【问题描述】:

我必须在 MATLAB 中翻译这个 Fortran 语句(变量初始化):

data k/350*'  '/

k 的声明如下

character*2 k(31,12)

我读到* 等于逗号,也就是说k 将是一个由两个元素组成的数组,350 和一个空单元格?

我应该在 MATLAB 中写什么?这个k=['350',''];

【问题讨论】:

标签: matlab fortran


【解决方案1】:

data 语句中,*, 不同:, 是分隔符,但 * 是重复计数说明符。

问题的例子

character*2 k(31,12)
data k/350*'  '/

初始化值等于 700 个空格,k 是一个 rank-2 数组(形状为 [31,12]),长度为 2 个字符。

理想情况下,k 的大小与初始化值表达式的大小相同,但存在差异:744 和 700。我们假设意图是数组 k 的每个元素都有值' '(即,所有空白)。

至于在 MATLAB 中执行此操作的最佳方法,我不是专家。但如有必要,我会添加一种方法(或其他人可以)。希望对 Fortan 代码(打算做什么/)做什么的解释就足够了。

【讨论】:

  • 如果我知道了,k 被声明为一个空矩阵 31*12。我认为代码有错误,350应该是372并且矩阵的每个值都是空的。
  • 我认为matlab中最好的方法是k=zeros(31,12);只有当我必须用增量循环“填充”空白空间时才需要这样做:只有在这种情况下,预分配内存才有用。
  • 372*' ' 确实是正确的。我相信,鉴于 MATLAB 中的字符变量被初始化为空白,您只需将字符串声明为具有适当大小和长度的数组。
  • 在 matlab 中,初始化 k 的一个好方法是作为一个元胞数组 k=repmat({' '},31,12) 有一些依赖于数组长度(在本例中为 2)的 fortran 语句,因此初始化很有用matlab中的单元格到实际空间。文件交换中的 f2matlab 可以帮助将 fortran 源转换为 matlab/octave 源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 2017-10-12
  • 1970-01-01
相关资源
最近更新 更多