使用MATLAB中的数字将数据从for循环输出到.mat文件

使用MATLAB中的数字将数据从for循环输出到.mat文件,matlab,for-loop,save,Matlab,For Loop,Save,我需要输出以下数据的.mat文件。我需要一个文件使单元格(1,1)成为平均值,单元格(2,1)成为平均值,然后我需要另一个文件使单元格(1,1)成为平均值,使单元格(1,1)成为扭矩,使单元格(1,1)成为平均值,以此类推 有人能帮我解释一下吗? 另外,如果有人知道如何自动调用矩阵A和B,这样我就可以得到A=[Mean_rpm1:Mean_rpmMAX],这也会非常有用 谢谢你的帮助 A = [Mean_rpm1 Mean_rpm2 Mean_rpm3 Mean_rpm4 Mean_rpm5 M

我需要输出以下数据的.mat文件。我需要一个文件使单元格(1,1)成为平均值,单元格(2,1)成为平均值,然后我需要另一个文件使单元格(1,1)成为平均值,使单元格(1,1)成为扭矩,使单元格(1,1)成为平均值,以此类推

有人能帮我解释一下吗? 另外,如果有人知道如何自动调用矩阵A和B,这样我就可以得到A=[Mean_rpm1:Mean_rpmMAX],这也会非常有用

谢谢你的帮助

A = [Mean_rpm1 Mean_rpm2 Mean_rpm3 Mean_rpm4 Mean_rpm5 Mean_rpm6 Mean_rpm7 Mean_rpm8 Mean_rpm9 Mean_rpm10 Mean_rpm11 Mean_rpm12];

B = [Mean_torque1 Mean_torque2 Mean_torque3 Mean_torque4 Mean_torque5 Mean_torque6 Mean_torque7 Mean_torque8 Mean_torque9 Mean_torque10 Mean_torque11 Mean_torque12];

plot(A,B,'*')


for i = 1:num_bins;
  bin = first + ((i-1)/10);
  eval(sprintf('Mean_RPM_list%0.f = A;',bin*10));
  eval(sprintf('Mean_Torque_list%0.f = B;',bin*10));  
end

首先,创建一组名称与数字不同的变量是一个非常糟糕的主意。正如您所见,处理此类变量非常困难,您必须始终使用eval(或其他相关)语句

创建单元格数组Mean_rpm并访问其元素Mean_rpm{1}等要容易得多

如果矢量是数字且大小相同,则还可以制作2D/3D阵列。然后以平均转速(:,:,1)等形式访问

接下来,要将单元格数组存储到mat文件,必须在MATLAB中创建此数组。没有选项(至少现在)可以通过循环中的部分来完成。(但您可以使用matfile对象对数值向量和矩阵执行此操作。)那么为什么需要这个中间的Mean_RPM_列表变量呢?只需在循环中执行
Mean\u RPM\u list{bin*10}=A

对于第一个问题,如果已经有了这些变量,则必须在循环中使用eval。差不多

A = [];
for k=1:K
    eval(sprintf('A{k} = [A, Mean_rpm%d];',k));
end
您还可以获取所有类似变量的名称并将其组合

varlist = who('Mean_rpm*');
A = cell(1,numel(varlist);
for k = 1:numel(varlist)
    eval('A{k} = varlist{k};');
end
下面是一个使用CELL2FUN的无循环:

A=cellfun(@(x)evalin('base',x),varlist,'UniformOutput',0);

首先,您应该避免使用所有这些单独的变量。数组、单元数组和结构数组等数据类型可以帮助您实现这一点。如果希望每个变量与一个名称关联,可以使用结构数组。下面我举了一个例子。不要像现在这样给
Mean_rpm1
赋值,而是把它赋值给
meanStruct.Mean_rpm1
,然后保存整个结构

% as you generate values for each variable, assign them to the
% appropriate field.
meanStruct.Mean_rpm1 = [10:10];
meanStruct.Mean_rpm2 = [12:15];
meanStruct.Mean_rpm3 = [13:20];
meanStruct.Mean_rpm4 = [14];
meanStruct.Mean_rpm5 = [15:18];
meanStruct.Mean_rpm6 = [16:20];
meanStruct.Mean_rpm7 = [17:22];
meanStruct.Mean_rpm8 = [18:22];
meanStruct.Mean_rpm9 = [19:22];
meanStruct.Mean_rpm10 = [20:22];
meanStruct.Mean_rpm11 = [21:22];
meanStruct.Mean_rpm12 = [22:23];

% save the structure array
save('meanValues.mat','meanStruct')


% load and access the structure array
clear all
load('meanValues.mat')
temp = meanStruct.Mean_rpm3

你能把这个问题说得更清楚一点吗?