2011-05-09 51 views
3

比方說,我有一個數據集的數組(從統計工具箱):在Matlab數據集數組變量設置爲一個值

>> myds 
myds = 
    Observation SheepCount 
    1    88   
    2    2   
    3    14   
    4    12   
    5    40 

我把一起從各種來源的數據,所以我想在將這個數據集與其他數據集合在一起之前,將「位置」設置爲4。在一個正常的矩陣中,你會說myds(:, 3) = 4,它會將4廣播到矩陣中的所有空間。

有沒有辦法在數據集上做到這一點,而不使用repmat

事情我已經試過了不起作用:

myds(:, 'Location') = 4 
myds(:).Location = 4 
myds.Location(:) = 4 
myds.Location = 4 

的事物,它們:

myds.Location = 4; myds.Location(:) = 4; % have to run both 
myds.Location = repmat(4, length(myds), 1); 

所以,我必須克服我厭惡 repmat?謝謝。

編輯:我想我真正想要的是避免指定4的數組的尺寸。

回答

2

您可以嘗試使用ones而不是repmat

myds.Location=4*ones(1,5); 
+0

謝謝,這很好,但決不是一個簡單的情況下,它仍然必須是'4 *者(長度(myds) ,1)',這仍然有點醜陋。 – rescdsk 2011-05-09 20:51:16

+1

我明白你想要做什麼,但我不認爲它可以用數據集來完成,儘管它對數組非常好。你的第一個建議也許是最簡單的。就個人而言,我會說'myds.Location = 4 * ones(size(myds.Observation))'很清楚理解,並且可以完成一行工作。 – abcd 2011-05-09 21:41:15

1

這不是優雅,但你也可以嘗試:

myds.Location= myds.Observation*0 + 4; 
相關問題