2013-03-26 90 views
0

我需要为以下数据输出.mat文件。我需要一个文件使单元格(1,1)为Mean_RPM_list1,单元格(2,1)为Mean_RPM_list2等等。然后我需要另一个文件使单元格(1,1)为Mean_Torque_list1以使单元格(1, 1).....等等。使用标题中的数字将for循环中的数据输出为.mat文件MATLAB

任何人都可以为我阐明这一点吗? 另外如果有人知道如何自动调用矩阵A和B,所以我可以有A = [Mean_rpm1:Mean_rpmMAX],这也会非常有帮助。

TIA任何帮助。

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 
+0

您可以尝试更清楚地设置问题吗? – 2013-03-26 16:07:52

回答

0

首先,这是一个非常糟糕的主意,以创建一个变量名称不同的数字。正如你所看到的,处理这些变量非常困难,你总是需要使用eval(或其他相关的)语句。

它更容易创建一个单元阵列Mean_rpm并访问其元素Mean_rpm {1}等

如果向量是数值大小相同,你也可以做一个2D/3D阵列。然后以Mean_rpm(:,:,1)的形式访问。

接下来,要将单元格数组存储到mat文件中,您必须在MATLAB中创建此数组。没有选择(至少现在)通过循环中的部件来完成。 (但是你可以使用matfile对象为数值向量和矩阵做它。)那么为什么你需要这个中间Mean_RPM_list变量?在你的循环中做Mean_RPM_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); 
0

你应该避免周围有摆在首位所有这三个变量。像数组,数组类型和单元阵列这样的数据类型可以帮助你解决这个问题。如果您希望每个变量都与名称关联,则可以使用结构数组。我在下面做了一个例子。不需要像现在这样将值分配给​​,而是将其分配给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