【发布时间】:2018-02-14 00:14:59
【问题描述】:
我有以下数据:
no_gridpoints = 640 % amount of columns in considered
surfaceelevation % a 1x640 array with surface elevation
Terskol1752, Terskol1753, ... Terskol2017 % 365x1 arrays with daily mean temperatures for 1 year of which the fifth colomn contains the temperature data
我想创建文件名中带有相应年份的 temp_glacier 文件。这通过在循环中使用 sprintf 命令在所有年份(1752-2017 年)中循环:
for k = 1752:2017
for m = 1:no_gridpoints
sprintf('temp_glacier%d(m)',k) = sprintf('Terskol%d(:,5)',k) + surfaceelevation
end
end
但是,我总是收到错误消息“下标分配维度不匹配。”。谁能告诉我我做错了什么?
谢谢
【问题讨论】:
-
您似乎将
sprintf误认为eval。sprintf中的表达式没有被评估,所以你的任务是声明“使这个字符串=这个另一个字符串添加到一个数组中”——这没有任何意义。将年度数据存储在单个单元格数组而不是 266 个单独命名的变量中会是更好的做法,然后您可以轻松地操作它们。我说更好的做法是因为如果你要使用eval,你应该知道it should be avoided! -
Wolfie 的评论是对的。而且很难知道你真正在寻找什么。您想用数据创建文本文件(例如逗号分隔)吗?还是 Matlab .mat 文件?我知道你想要一个包含那一年温度的每一年的单独文件。但是你如何处理“+surfaceelevation”部分?