テーブルで変数への代入や変数の作成を行うには、テーブルの高さと行数が一致していなければなりません。
显示 更早的评论
こんにちは。
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の最下部です。どの列も最終行までデータが入っているのですが、なぜこのエラーがでるのかが分かりません。。

7 个评论
こんにちは。下記のようなindexingを行っていますが、本当に意図したものでしょうか?
a = 1:10
'2021/07/01' == '2031/08/02'
a('2021/07/01' == '2031/08/02')
Yu
2021-9-25
Atsushi Ueno
2021-9-25
编辑:Atsushi Ueno
2021-9-25
>そのためのindexingだったのですが、どこかまずい点がありましたでしょうか?
もう少し具体的に説明致します。
idx = data2.DATE == sprintf('2021/07/0%d',k+1);
D{k,1} = data2(idx,:);
上記1行目が動作する場合、data2.DATEは文字列(数値ベクトル)と断定できます。←×
(追記:上記認識は誤り、datetime型は文字列の日付時間と一致性判断可(文字単位の一致性ではない))
恐らく「(今年)7/2〜8の全データ」なのでidxの値はlogical([1 1 1 1 1 1 1 1 1 1])かlogical([1 1 1 1 1 1 1 1 1 0])のどちらかになるのでしょう。
data2(logical([1 1 1 1 1 1 1 1 1 1]),:)はdata2の1行目から10行目を選択している事に、
data2(logical([1 1 1 1 1 1 1 1 1 0]),:)はdata2の1行目から9行目を選択している事になります。
このようなindexingは本当に意図したものでしょうか?
Yu
2021-9-25
Atsushi Ueno
2021-9-25
データの型を教えて頂きありがとうございます。
datetime型ですかなるほど...更にテーブル内の全要素と==で比較出来るんですね。
Atsushi Ueno
2021-9-25
なるほど、以前excelのvlookupについて質問されていましたが、今それが必要なのですね。
Yu
2021-9-25
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 データ型の識別 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!