transform an empty matrix '0x0 double' into a matrix '0x2 double'
12 ビュー (過去 30 日間)
古いコメントを表示
Hello! How can I transform an empty matrix '0x0 double' into a matrix '0x2 double' as in the figure?
For example in my case, I have a cell 'test_p'. Rows 3,4,5 (0x0 double) should become like rows 1 and 2 (0x2 double).
test_p = importdata("test_p.mat");
data_0x2_double = test_p{1, 1};
data_0x0_double = test_p{3, 1};
0 件のコメント
採用された回答
Bruno Luong
2023 年 7 月 20 日
編集済み: Bruno Luong
2023 年 7 月 20 日
test_p = importdata("test_p.mat")
ir = cellfun('size',test_p,1)==0 & cellfun('size',test_p,2)==0
test_p(ir) = {zeros(0,2)}
0 件のコメント
その他の回答 (2 件)
Steven Lord
2023 年 7 月 20 日
Since a 0-by-0 array and a 0-by-2 array have the same number of elements you can reshape one into the other.
A = zeros(0, 0)
B = reshape(A, [0 2])
C = reshape(B, 0, 0)
whos A B C
3 件のコメント
Steven Lord
2023 年 7 月 20 日
Your code below made an assumption about the user's data, one that's likely valid (and is valid WRT the original question) but in some cases may not be.
A = zeros(0, 0, 'single');
B = reshape(A, [0 2]);
C = zeros(0, 2);
whos A B C
B and C are different classes. You could modify the call that creates C to always create it 'like' A or with the same type as A, but reshape will not change the type and is shorter than either of the calls that create C1 or C2 below.
C1 = zeros(0, 2, 'like', A)
C2 = zeros(0, 2, class(A))
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!