2013-03-26 40 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