私はファイルfiledata.matを持っていますが、車両チャネルのデータを含むサブレベルの1x1構造体が含まれています。このファイルには30個の測定チャネルがあります。チャネル名、チャネル単位、およびチャネル値(時間に対する)は、別々のサブレベルに格納されます。MATLAB:構造体からデータを抽出し、カスタムサイズの行列に配置する
iはコード列番号によってどのチャネル(すなわち、どのデータの列)を指定した行の行1におけるチャンネル名とチャンネルユニット2
とマトリックスのデータが完全なコード場所を持ちたいです私は現在持っては以下の通りです:
clear all;
channels = [1 4 8];
source = load('filedata.mat');
N = size(channels,2);
I = size(source.Data.DataOut,1) + 2;
data = zeros(I,N);
for i = (1:1:I)
for n = (1:1:N)
if i == 1
data(i,n) = source.Data.ChannelNames{channels(n)};
elseif i == 2
data(i,n) = source.Data.ChannelUnits{channels(n)};
else
data(i,n) = source.Data.DataOut{i,channels(n)};
end
end
end
私の考え方は、これは行1でchannelnamesを配置することである(つまり、i = 1の場合)、行2のchannelunits(i = 2のとき)、その後の残りのすべての行を配置しますi = Iまでのデータ
しかし、これを実行するとコード私はエラー "下付きの割り当てのディメンションの不一致を取得します。行14にある:
data(i,n) = source.Data.ChannelNames{channels(n)};
誰もが解決策を提案することができた場合 - おそらくもっと重要なこと - IVEは間違っている私はそれを本当に感謝(私は何かを学ぶことができます!)について説明します。
ありがとうございます。
ユク channelnamesと単位がしかし、データイムは==で エラーを取得して、今取り組んでいるあなたの速いREPONSEため おかげで> 16個の データ(3時dataextract:I、:) =ソース.Data.DataOut(:、channels); %#私はDataOutがセル配列であると仮定します ???ダブルからセルへの変換は不可能です。 – user1230617
コードからDataOutはセル配列でなければなりません。どうやらそれは間違った仮定です。 DataOutをセル配列に変換するか、別の数値変数に保持することができます。この 'data'変数をどうやって使うのですか? – yuk
私はコードを修正しましたが、それは必要なものですか? – yuk