Matlab 从数据结构中获取变量并从这些变量创建矩阵

Matlab 从数据结构中获取变量并从这些变量创建矩阵,matlab,data-structures,Matlab,Data Structures,我有一个数据结构,它的数据点名为Vel1到Vel1520。但是,当我应用Uorder=orderfields时(平均速度)按顺序排列的变量Vel1Vel10Vel100Vel1000Vel1001Vel1002等。是否有任何方法对数据结构进行排序,使其按升序列出从1到1520的变量?关于这一点,Jer一个简单的解决方法是始终使用相同数量的数字。0001,0002,…,0010,…,1520请尝试sprintf('Vel%04d',42)而不是num2str(42)。这会将格式化文本打印为字符串%

我有一个数据结构,它的数据点名为
Vel1
Vel1520
。但是,当我应用
Uorder=orderfields时(平均速度)
按顺序排列的变量
Vel1
Vel10
Vel100
Vel1000
Vel1001
Vel1002
等。是否有任何方法对数据结构进行排序,使其按升序列出从
1
1520
的变量?关于这一点,Jer

一个简单的解决方法是始终使用相同数量的数字。0001,0002,…,0010,…,1520

请尝试
sprintf('Vel%04d',42)
而不是
num2str(42)
。这会将格式化文本打印为字符串<代码>%04d是一个特殊代码,上面写着:用零填充,保留4个位置,打印一个整数。查看并查看matlabs以获得更全面的示例。

您可以修改数据结构吗?如果是这样的话,为什么不使用Vel0001呢?我该怎么做?这是我用来创建数据结构的代码
V_Velocity=[];对于dd=1:38 ee=dd;对于ff=1:40,fieldname=['V_Velocity'num2str(dd+(ff-1)*38)];V_速度(fieldname)=数据梳{1,ff}{1,ee}(1:1024,3);平均速度(字段名)=平均速度(字段名);end end
如果我修改“V_Velocity”部分,我将得到相同的结果,当我使用
sprintf
时,我会得到以下错误
错误:File:Load_Files\u TSR785_066D.m行:41列:42意外的MATLAB表达式。
。这是新代码
U_Velocity=[];对于aa=1:38,bb=aa;对于cc=1:40,fieldname=sprintf('U_速度%04d'num2str(aa+(cc-1)*38));U_速度(fieldname)=数据梳{1,cc}{1,bb}(1:1024,2);平均速度(字段名)=平均速度(字段名);end end
没有sprintf会为您进行格式化,因此您必须将int作为第二个参数传递给它(而不是
num2str
的结果)。所以使用
fieldname=sprintf('U\U速度%04d',aa+(cc-1)*38)
printf
函数系列非常有用且功能强大,因此我建议您看看该教程。您还在对它们进行排序吗?你还是应该这么做。是的,我还在整理它们