2014-06-15 72 views
1

假設下一個變量:如何堅持結構對象與MATLAB

B=genvarname(strcat('B',num2str(25),'')); 

和B是:

B=B25; 

現在,我想在一個結構對象隱含「B25」,所以我做到了這個:

eval([B ' = struct([])']); 

通過該代碼,我將B25(保存在「B」中)轉換爲結構對象。

現在,我要救另一個結構對象爲B25,像這樣的:

A = 

    a1: 1 
    a2: 2 
    a3: 'a' 

正如你可以看到,A是一個結構了。

這裏就是我需要你們的幫助,我不知道該怎麼做這樣的事情:

somefunction(B,A); 

,堅持B,其中A,就像這樣:

B25.A= 

     a1: 1 
     a2: 2 
     a3: 'a' 

謝謝!

回答

0

爲什麼不乾脆:

A = struct('a1', 1, 'a2', 2, 'a3', 'a'); 

B = struct('a', A) 
+0

對不起,但這不是我需要的答案,請看問題請。 – lisandrojim

+1

然後請發佈一個適當的問題。目前還不清楚你想達到什麼目的。 – tim

1

你可以去與討厭evals做:

eval([B '.A = A;']) 

這將工作,但實在是太差了風格,當你使用越來越多的變量名稱時,情況會變得更糟,如B25

然而,正確的問題是,爲什麼使用動態「編號」變量名稱而不是結構數組或單元格數組?

B(25).A = A; % using a struct-array 

B{25}.A = A; % using a cell array 

這是在預設電臺的語言是什麼列出都是爲了 - 避免像B1變量名的需要: 如果你有25 B的,因爲事情可能看起來容易,B2

0
B=genvarname(strcat('B',num2str(25),'')); 
VaibleName='A'; 
Data= struct('a1', 1, 'a2', 2, 'a3', 'a'); 
eval([B strcat(['=struct(''',VaibleName,''', Data)'''])]) 

B25.A 

ans = 

    a1: 1 
    a2: 2 
    a3: 'a'