csvデータを行列入​れ替えし、なおかつ垂​直方向に連結を複数デ​ータに対してまとめて​行う方法について

初心者です。見当違いなことを言っていたら申し訳ありません。
現在2行×n列のcsvデータを多数持っております。
それらcsvデータをn行×2列に変換し、なおかつ垂直方向に連結したいと考えています。
1つずつ行うのであれば、
a = importdata("●●.csv");
b = transpose(a);
c = importdata("××.csv");
d = transpose(c);
e = vertcat(b,d);
上記で出来るのですが、複数データをまとめて処理したいと考えております。
以下中途半端ではありますが、作成したコードになります。
この後どうすれば良いか分からず、また以下も正しいのか今一つ分かりません。
ご教授頂けないでしょうか。
files = dir('*.csv');
for ii = 1:length(files)
tmp = transpose(files(ii).name);
end

 Accepted Answer

Hernia Baby
Hernia Baby on 24 Aug 2022
Edited: Hernia Baby on 24 Aug 2022

1 vote

以下のようにすればいいかと思います。
もちろんvertcatでも同様です。
files = dir('*.csv');
A = [];
for ii = 1:length(files)
tmp = transpose(readmatrix(files(ii).name));
A = [A;tmp];
end
※読み込む関数がなかったので追記しました(readmatrix)。

7 Comments

cho hunseki
cho hunseki on 24 Aug 2022
Hernia Babyさん
連続で回答頂きありがとうございました。
提示頂いたコードで出来ました。
for文の中にさらにfor文を組み込むのか?
と考えておりました。
先にデータをつないで、最後にまとめて行列入れ替えるのですね。
ありがとうございました。
Hernia Baby
Hernia Baby on 24 Aug 2022
解決できたようでよかったです。
■補足
 内容としては
  ①読み込む ➡ 転置する
  ②Aに縦に連結
 を繰り返しています。
■参考
 [A, B]は水平に連結 = horzcat
 [A; B]は垂直に連結 = vertcat
cho hunseki
cho hunseki on 29 Aug 2022
Hernia Babyさん
平素よりお世話になっております。
改めて質問があり、ご連絡しました。
ご提案頂いたコードで複数データの連結は可能でした。ありがとうございました。
その後なのですが、連結した生体信号をスペクトログラムで描出したいと考えています。
以下コードで複数csvデータの連結、およびスペクトログラムを試みました。
files = dir('*.csv');
A = [];
for ii = 1:length(files)
tmp = transpose(readmatrix(files(ii).name));
A = [A;tmp];
end
s = spectrogram(A);
spectrogram(A,'yaxis')
すると以下のエラーメッセージがでました。
使い方によるエラー pspectrogram>chkinput
X はベクトル (行または列) でなければなりません。
エラー: pspectrogram (行 33)
chkinput(xw,'X');
エラー: spectrogram (行 191)
[varargout{1:nargout}] = pspectrogram({x},'spect',inpArgs{:});
エラー: untitled (行 8)
s = spectrogram(A);
手作業で複数個csvデータを連結させてスペクトログラムにすることはできたのですが、
提示頂いたfor文を用いるとできませんでした。
解決策などはありますでしょうか。
お忙しい中大変恐縮ではありますが、ご検討頂ければ幸いです。
Hernia Baby
Hernia Baby on 29 Aug 2022
読み込んだデータAはどうなってますでしょうか。スカラー値もしくは行列になっていませんか?後者が濃厚な気がします。
cho hunseki
cho hunseki on 29 Aug 2022
n行2列の行列になっています。
Hernia Baby
Hernia Baby on 29 Aug 2022
その場合、どちらの列か選ぶ必要があります。例えば2列目をスペクトル解析する場合はA(:,2)のようにして関数に入れてください。
cho hunseki
cho hunseki on 29 Aug 2022
ありがとうございました。
スペクトログラム作成できました。
行列は対応していないのですね。

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!