1つのデータにXY要​素を持たせて行列を作​成する方法

4 ビュー (過去 30 日間)
Naoya Oka
Naoya Oka 2022 年 12 月 18 日
コメント済み: Naoya Oka 2022 年 12 月 18 日
MATLAB初心者です。
「0」「1」で判別したデータを下図のように並び替えをしたいです。
(X座標をExcelのA~Z...などに、Y座標データをExcelの1~nに反映させたい)
現在、X座標とY座標、それらに対応した「0」「1」の各種csv列データがあります。
そこでMATLAB内で行列をつくり、Excelにインポートしたいのですが
「0」「1」のデータにXY座標のデータを持たせ、行列を作る方法が分かりません。
有識者の方の力を貸していただきたいです。

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 12 月 18 日
編集済み: Atsushi Ueno 2022 年 12 月 18 日
質問の添付図をExcelファイル(zero_one.xls)に起こしました。これをmapとします。
まず逆順でmapを元のデータ(org)に変換します。それをまた、orgからmapに変換します。
readmatrix, writematrix, meshgrid, sortrows, reshape の各関数を使用しました。
%% Excelデータ(map)から逆順で元のデータを再現する
map = readmatrix('zero_one.xls');
[idx,idy] = meshgrid(1:size(map,1),1:size(map,2)); % X座標とY座標を作る
org = [idx(:),idy(:),map(:)]; % 元データ
writematrix(org,'index.csv'); % X座標とY座標、それらに対応した「0」「1」の各種csv列データを再現
type index.csv
1,1,0 1,2,0 1,3,0 1,4,0 1,5,0 1,6,0 1,7,0 1,8,0 1,9,0 1,10,0 1,11,0 1,12,0 1,13,0 1,14,0 1,15,0 1,16,0 1,17,0 1,18,0 1,19,0 1,20,0 1,21,0 1,22,0 1,23,0 1,24,0 1,25,0 1,26,0 1,27,0 1,28,0 1,29,0 1,30,0 1,31,0 1,32,0 1,33,0 1,34,0 1,35,0 1,36,0 1,37,0 1,38,0 1,39,0 2,1,0 2,2,0 2,3,0 2,4,0 2,5,0 2,6,0 2,7,0 2,8,0 2,9,0 2,10,0 2,11,0 2,12,0 2,13,0 2,14,0 2,15,0 2,16,0 2,17,0 2,18,0 2,19,0 2,20,0 2,21,0 2,22,0 2,23,0 2,24,0 2,25,0 2,26,0 2,27,0 2,28,0 2,29,0 2,30,0 2,31,0 2,32,0 2,33,0 2,34,0 2,35,0 2,36,0 2,37,0 2,38,0 2,39,0 3,1,0 3,2,0 3,3,0 3,4,0 3,5,0 3,6,0 3,7,0 3,8,0 3,9,0 3,10,0 3,11,0 3,12,0 3,13,0 3,14,0 3,15,0 3,16,0 3,17,0 3,18,1 3,19,0 3,20,0 3,21,0 3,22,0 3,23,0 3,24,0 3,25,0 3,26,0 3,27,0 3,28,0 3,29,0 3,30,0 3,31,0 3,32,0 3,33,0 3,34,1 3,35,1 3,36,0 3,37,1 3,38,1 3,39,1 4,1,1 4,2,1 4,3,1 4,4,1 4,5,1 4,6,1 4,7,1 4,8,1 4,9,1 4,10,1 4,11,1 4,12,1 4,13,1 4,14,1 4,15,1 4,16,0 4,17,1 4,18,1 4,19,1 4,20,1 4,21,1 4,22,1 4,23,1 4,24,1 4,25,1 4,26,1 4,27,1 4,28,1 4,29,1 4,30,1 4,31,1 4,32,1 4,33,1 4,34,1 4,35,0 4,36,0 4,37,0 4,38,0 4,39,0 5,1,0 5,2,0 5,3,0 5,4,0 5,5,0 5,6,0 5,7,0 5,8,0 5,9,0 5,10,0 5,11,0 5,12,0 5,13,0 5,14,0 5,15,0 5,16,0 5,17,0 5,18,0 5,19,0 5,20,0 5,21,0 5,22,0 5,23,0 5,24,0 5,25,0 5,26,0 5,27,0 5,28,0 5,29,0 5,30,0 5,31,0 5,32,0 5,33,0 5,34,0 5,35,0 5,36,0 5,37,0 5,38,0 5,39,0 6,1,0 6,2,0 6,3,0 6,4,0 6,5,1 6,6,1 6,7,1 6,8,1 6,9,0 6,10,0 6,11,0 6,12,0 6,13,0 6,14,0 6,15,0 6,16,0 6,17,0 6,18,0 6,19,0 6,20,0 6,21,0 6,22,0 6,23,0 6,24,1 6,25,1 6,26,1 6,27,1 6,28,0 6,29,0 6,30,0 6,31,0 6,32,0 6,33,0 6,34,0 6,35,0 6,36,0 6,37,0 6,38,0 6,39,0 7,1,0 7,2,0 7,3,0 7,4,1 7,5,0 7,6,0 7,7,0 7,8,0 7,9,0 7,10,0 7,11,0 7,12,0 7,13,0 7,14,0 7,15,0 7,16,0 7,17,1 7,18,1 7,19,1 7,20,1 7,21,1 7,22,1 7,23,1 7,24,1 7,25,0 7,26,0 7,27,0 7,28,0 7,29,0 7,30,0 7,31,0 7,32,0 7,33,0 7,34,0 7,35,1 7,36,1 7,37,1 7,38,1 7,39,1 8,1,1 8,2,1 8,3,1 8,4,1 8,5,0 8,6,0 8,7,0 8,8,0 8,9,0 8,10,0 8,11,0 8,12,0 8,13,0 8,14,0 8,15,1 8,16,1 8,17,0 8,18,0 8,19,0 8,20,0 8,21,0 8,22,0 8,23,0 8,24,0 8,25,0 8,26,0 8,27,0 8,28,0 8,29,0 8,30,0 8,31,0 8,32,0 8,33,0 8,34,1 8,35,1 8,36,0 8,37,0 8,38,0 8,39,0 9,1,0 9,2,0 9,3,0 9,4,0 9,5,0 9,6,0 9,7,0 9,8,0 9,9,0 9,10,0 9,11,0 9,12,0 9,13,0 9,14,1 9,15,1 9,16,0 9,17,0 9,18,0 9,19,0 9,20,1 9,21,1 9,22,1 9,23,1 9,24,1 9,25,1 9,26,0 9,27,0 9,28,0 9,29,0 9,30,0 9,31,0 9,32,0 9,33,1 9,34,1 9,35,1 9,36,1 9,37,1 9,38,1 9,39,1 10,1,1 10,2,1 10,3,1 10,4,1 10,5,1 10,6,0 10,7,0 10,8,0 10,9,0 10,10,0 10,11,1 10,12,1 10,13,1 10,14,1 10,15,1 10,16,1 10,17,1 10,18,1 10,19,1 10,20,1 10,21,0 10,22,0 10,23,1 10,24,1 10,25,0 10,26,0 10,27,0 10,28,0 10,29,0 10,30,1 10,31,1 10,32,1 10,33,1 10,34,1 10,35,1 10,36,1 10,37,0 10,38,0 10,39,0 11,1,0 11,2,0 11,3,1 11,4,1 11,5,1 11,6,0 11,7,0 11,8,0 11,9,0 11,10,1 11,11,1 11,12,0 11,13,0 11,14,0 11,15,1 11,16,1 11,17,0 11,18,0 11,19,0 11,20,0 11,21,0 11,22,1 11,23,1 11,24,1 11,25,0 11,26,0 11,27,0 11,28,0 11,29,0 11,30,0 11,31,0 11,32,0 11,33,0 11,34,1 11,35,1 11,36,0 11,37,0 11,38,0 11,39,0 12,1,0 12,2,0 12,3,1 12,4,1 12,5,0 12,6,0 12,7,0 12,8,0 12,9,0 12,10,0 12,11,0 12,12,0 12,13,0 12,14,0 12,15,0 12,16,0 12,17,0 12,18,0 12,19,0 12,20,0 12,21,0 12,22,1 12,23,1 12,24,0 12,25,0 12,26,0 12,27,0 12,28,0 12,29,0 12,30,0 12,31,0 12,32,0 12,33,0 12,34,0 12,35,0 12,36,0 12,37,0 12,38,0 12,39,0 13,1,0 13,2,1 13,3,1 13,4,0 13,5,0 13,6,0 13,7,0 13,8,0 13,9,0 13,10,0 13,11,0 13,12,0 13,13,0 13,14,0 13,15,0 13,16,0 13,17,0 13,18,0 13,19,0 13,20,0 13,21,0 13,22,0 13,23,0 13,24,0 13,25,0 13,26,0 13,27,0 13,28,0 13,29,0 13,30,0 13,31,0 13,32,0 13,33,0 13,34,0 13,35,0 13,36,0 13,37,0 13,38,0 13,39,0 14,1,0 14,2,0 14,3,0 14,4,0 14,5,0 14,6,0 14,7,0 14,8,0 14,9,0 14,10,0 14,11,0 14,12,0 14,13,0 14,14,0 14,15,0 14,16,0 14,17,0 14,18,0 14,19,0 14,20,0 14,21,0 14,22,0 14,23,0 14,24,0 14,25,0 14,26,0 14,27,0 14,28,0 14,29,0 14,30,0 14,31,0 14,32,0 14,33,0 14,34,0 14,35,0 14,36,0 14,37,0 14,38,0 14,39,0 15,1,0 15,2,0 15,3,0 15,4,0 15,5,0 15,6,0 15,7,0 15,8,0 15,9,0 15,10,0 15,11,0 15,12,0 15,13,0 15,14,0 15,15,0 15,16,0 15,17,0 15,18,0 15,19,0 15,20,0 15,21,0 15,22,0 15,23,0 15,24,0 15,25,0 15,26,0 15,27,0 15,28,0 15,29,0 15,30,0 15,31,0 15,32,0 15,33,0 15,34,0 15,35,0 15,36,0 15,37,0 15,38,0 15,39,0 16,1,0 16,2,0 16,3,0 16,4,0 16,5,1 16,6,1 16,7,1 16,8,1 16,9,0 16,10,0 16,11,0 16,12,0 16,13,0 16,14,0 16,15,0 16,16,0 16,17,0 16,18,0 16,19,0 16,20,0 16,21,0 16,22,0 16,23,0 16,24,1 16,25,1 16,26,1 16,27,1 16,28,0 16,29,0 16,30,0 16,31,0 16,32,0 16,33,0 16,34,0 16,35,0 16,36,0 16,37,0 16,38,0 16,39,0 17,1,0 17,2,0 17,3,0 17,4,0 17,5,1 17,6,1 17,7,1 17,8,1 17,9,0 17,10,0 17,11,0 17,12,0 17,13,0 17,14,0 17,15,0 17,16,0 17,17,0 17,18,0 17,19,0 17,20,0 17,21,0 17,22,0 17,23,0 17,24,0 17,25,1 17,26,1 17,27,1 17,28,0 17,29,0 17,30,0 17,31,0 17,32,0 17,33,0 17,34,0 17,35,0 17,36,0 17,37,0 17,38,0 17,39,0 18,1,0 18,2,0 18,3,0 18,4,0 18,5,0 18,6,1 18,7,1 18,8,0 18,9,0 18,10,0 18,11,0 18,12,0 18,13,0 18,14,0 18,15,0 18,16,0 18,17,0 18,18,0 18,19,0 18,20,0 18,21,0 18,22,0 18,23,0 18,24,0 18,25,1 18,26,1 18,27,0 18,28,0 18,29,0 18,30,0 18,31,0 18,32,0 18,33,0 18,34,0 18,35,0 18,36,0 18,37,0 18,38,0 18,39,0 19,1,0 19,2,1 19,3,1 19,4,1 19,5,1 19,6,1 19,7,1 19,8,0 19,9,0 19,10,0 19,11,0 19,12,0 19,13,0 19,14,0 19,15,0 19,16,0 19,17,0 19,18,0 19,19,0 19,20,0 19,21,1 19,22,1 19,23,1 19,24,1 19,25,1 19,26,1 19,27,0 19,28,0 19,29,0 19,30,0 19,31,0 19,32,0 19,33,0 19,34,0 19,35,0 19,36,0 19,37,0 19,38,0 19,39,0
%% 元データ(org)からExcelデータと同じデータを作る
clear all % 一旦メモリを全てクリアする
org = readmatrix('index.csv'); % 元データ読み込み
org = sortrows(org); % データ取得順がバラバラならソートする % 列優先で[X座標,Y座標,1/0データ]の順
map2 = reshape(org(:,3),[max(org(:,1)),max(org(:,2))]);
writematrix(map2,'zero_one2.csv'); % writematrix(map2,'zero_one2.xls'); 表示の為csvで保存
type zero_one2.csv
0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1 0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1 0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1 0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  3 件のコメント
Atsushi Ueno
Atsushi Ueno 2022 年 12 月 18 日
>質問の意図が伝わらなくて申し訳ありません
添付の demo1.xlsx 通りのデータを想定していましたよ。質問の意図は明確に伝わっています。
org = readmatrix('https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1234767/demo1.xlsx'); % 元データ読み込み
org = sortrows(org); % データ取得順がバラバラならソートする % 列優先で[X座標,Y座標,1/0データ]の順
map2 = reshape(org(:,3),[max(org(:,1)),max(org(:,2))]);
writematrix(map2,'zero_one2.csv'); % writematrix(map2,'zero_one2.xls'); 表示の為csvで保存
type zero_one2.csv
0,1,1,0,1 0,1,0,1,0 0,0,0,1,0 0,1,1,1,0 1,0,1,0,0
Naoya Oka
Naoya Oka 2022 年 12 月 18 日
ありがとうございます!
上手く進めることができました。

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!