我有一個簡單的結構問題。matlab:結構數據和多級索引
讓我們創建:
x(1).a(:, :) = magic(2);
x(2).a(:, :) = magic(2)*2;
x(3).a(:, :) = magic(2)*3;
如何列出一個(1,1)從所有的X-ES?
我想做到這一點,如:
x(1, :).a(1,1)
,但有一個錯誤「對於這種類型的多級索引所需的標量指標。」
如何處理它?我知道我可以做一個循環,但這可能是最糟糕的解決方案:) 謝謝!
我有一個簡單的結構問題。matlab:結構數據和多級索引
讓我們創建:
x(1).a(:, :) = magic(2);
x(2).a(:, :) = magic(2)*2;
x(3).a(:, :) = magic(2)*3;
如何列出一個(1,1)從所有的X-ES?
我想做到這一點,如:
x(1, :).a(1,1)
,但有一個錯誤「對於這種類型的多級索引所需的標量指標。」
如何處理它?我知道我可以做一個循環,但這可能是最糟糕的解決方案:) 謝謝!
這不是最好的數據結構使用,如果這是你想要做的查詢,正是因爲這種索引不能直接完成。
然而,這裏是一個辦法,工作原理:
cellfun(@(X) X(1,1), {x.a})
語法{x.a}
從「結構數組」到單元格數組轉換x
。然後,我們使用cellfun
將函數作爲映射應用於單元陣列。匿名函數@(X) X(1,1)
需要一個參數X
並返回X(1,1)
。
你也可以得到你的數據是這樣的:
B = cat(3,x.a);
out = reshape(B(1,1,:),1,[]);
順便說一句,環不是邪惡。有時甚至比矢量化索引更快。嘗試了兩種方式,看看來講,你最適合:
謝謝。但是如果我想要f.ex怎麼辦? x(1,:)。a(:,1)? – Art 2012-03-21 04:09:21