テーブルで変数への代入や変数の作成を行うには、テーブルの高さと行数が一致していなければなりません。
18 次查看(过去 30 天)
显示 更早的评论
こんにちは。
1)7✕2のセルを作成し、セルの1列目に完成させたいtableを、2列目に抽出したい情報があるtableをいれてあります。
2)1日毎にセルの行を分けて格納しているため、どの行も同じ型のtableです。
3)しかし、5行目のデータだけ以下のようにエラーになってしまいます。
どの変数(列)も、最終行までデータがあるのですが、このデータだけ上手くいかず困ってしまいました。
原因がわかるかたがいらっしゃいましたら教えて下さい。
D = cell(7,2); % 格納セルの作成
for k = 1:7
% data2を日付毎にセル1列目に格納
idx = data2.DATE == sprintf('2021/07/0%d',k+1);
D{k,1} = data2(idx,:);
% NavlogのtimeTblを日付毎にセル2列目に格納
idxx = timeTbl.Date == sprintf('2021/07/0%d',k+1);
D{k,2} = timeTbl(idxx,:);
% data2に緯度経度をNavlogのtimeTblから抽出
D{k,1}.Latitude = D{k,2}.Latitude(D{k,1}.timestamp_JST);
D{k,1}.Longitude = D{k,2}.Longitude(D{k,1}.timestamp_JST);
end
5行目の1列目が860252✕26列となっていますが、27〜29列目に、セル2列目からタイムスタンプを基準にデータを抽出する流れです。
↓以下はセル5行1列目のtableの最下部です。どの列も最終行までデータが入っているのですが、なぜこのエラーがでるのかが分かりません。。
采纳的回答
Atsushi Ueno
2021-9-25
编辑:Atsushi Ueno
2021-9-25
>原因がわかるかたがいらっしゃいましたら教えて下さい。
”E{k,2}.Latitude(E{k,1}.timestamp_JST)”は、セル2列目(抽出したいtimetable)の項目中、セル1列目(完成させたいtable)のtimestamp_JST列のタイムスタンプと合致する行を抽出する事を意図していると思うのですが、そうはなっておらず、毎回全行が抽出されているので「完成させたいtableの行数*抽出したいtimetableの行数」のベクトルとなってしまいます。これが原因です。E{k,1}.timestamp_JSTのindex参照を除けば、完成させたいtableと抽出したいtimetableの行数が合致する(2021/7/8を除く)のでエラーが出なくなりました。
load('samples.mat');
E = cell(7,2); % 格納セルの作成
for k = 1:1 % <<<<最初の1つだけ
% data2を日付毎にセル1列目に格納
idx = datasample.DATE == sprintf('2021-07-0%d',k+1);
E{k,1} = datasample(idx,:);
% NavlogのtimeTblを日付毎にセル2列目に格納
idxx = timeTblsample.Date == sprintf('2021-07-0%d',k+1);
E{k,2} = timeTblsample(idxx,:);
% data2に緯度経度をNavlogのtimeTblから抽出
E{k,1}.Latitude = E{k,2}(E{k,1}.timestamp_JST(1),2);
E{k,1}.Longitude = E{k,2}(E{k,1}.timestamp_JST(1),3);
E{k,1}
end
「行をindex指定で、列を変数名で」指定する方法が判らないので両方ともindex指定で行いました。
tableにtimetableをくっ付けると上記のような形になってしまいました。
あと、抽出側に同じタイムスタンプのデータが複数ある場合全てのデータを拾ってしまうので、この処理方法を検討する必要がありそうです。1番目(2021/7/2)はたまたま行数が一致しただけで、k=1:7で繰り返すと途中でエラーが出ます。
2 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!