creating a matrix from an image
2 ビュー (過去 30 日間)
古いコメントを表示
Dear all,
I have an image and when it is read in matlab, it is [m*n] matrix, named M,
I need to create another matrix, named MM, which is exactly M, but the indexes are also listed in that.
In fact, MM has 3 columns and the third column is M (:), but the first two columns are i and j which
i=1:m, j=1:n
Thanks in advance
2 件のコメント
Paul Hoffrichter
2020 年 12 月 11 日
Trying to follow you. For this example, spell out what you want MM to be.
M =
1 2 3
4 5 6
7 8 9
10 11 12
>> M(:)
ans =
1
4
7
10
2
5
8
11
3
6
9
12
採用された回答
Ameer Hamza
2020 年 12 月 11 日
編集済み: Ameer Hamza
2020 年 12 月 11 日
You can use meshgrid() like this
[r,c] = ndgrid(1:size(M,1), 1:size(M,2));
MM = [r(:), c(:), M(:)];
6 件のコメント
Rik
2020 年 12 月 11 日
編集済み: Rik
2020 年 12 月 11 日
The cause of this inconsistency is that Matlab stores arrays in a column-major form. So if you want to use (:) to transform an array into a vector, you need to make sure the result of your coordinate grid matches that order.
The solution is simple: replace meshgrid by ndgrid. Each of these functions has their use, but ndgrid will give the required order in this case. (you could also sort r and c, but that would be an unnecessary operation)
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Resizing and Reshaping Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!