2016-09-29 90 views
0

我有.mat文件格式,我想修改傳遞給另一個軟件。 該文件具有4個字段的1x1結構(名稱:數據)。其中一個是1x15結構(名稱:事件)與另外4個字段。我想修改這些字段。 例如,第一個是 '時間',我試着用不同的方式來修改:修改結構的字段值! <Matlab>

data.event.time=[1:15]; 

,我得到的錯誤:

"Scalar structure required for this assignment" 

也試過:

data.event = setfield(data.event,'time',1:15); 

並得到:

"Scalar structure required for this assignment. 

Error in setfield (line 33) 
    s.(deblank(strField)) = varargin{end};" 

我知道我不瞭解Matlab上的結構機制,所以我的問題可能有點愚蠢,但這是我第二次使用它。

+0

這是什麼結構?這裏缺少信息。如果你做'a.b.c = [1:15]'它完美的工作,所以這是阻止你這樣做的結構。 –

+0

對不起,但你是什麼意思「什麼是結構」。我的意思是什麼可能是缺少的信息? – KnowsNothing

回答

1

你可能在尋找這樣的:

for t=1:15 
    data.event(t).time=t; 
end 

如果你有,你要分配給一個結構的多個元素的載體,一個循環是最簡單的方法。

不幸的是,似乎沒有將矢量元素直接分配給結構元素的好方法。

如果您將矢量更改爲cellarray,可能沒有循環,但我個人發現這不符合直覺。

0

由於已經由丹尼斯Jaheruddin建議,可以通過轉換爲一個單元陣列,並使用內置deal功能避免for循環如下:

timeCell = num2cell(1:15); 
[event.time] = deal(timeCell{:}); 

need to convert to a cell array,因爲要使用不同的載體元素作爲deal函數的參數。