連続しない番号での繰り返し計算
1 view (last 30 days)
Show older comments
フォルダに V(1).csv、V(6).csv、V(8).csv、V(20).csv とcsvファイルが入っているとします。
ここで
for i = 1:20
A = csvread(V(i).csv);
B = csvread(V(i+1).csv);
B - A;
end
としてもcsvファイルのかっこの番号が連続していないので、もちろんエラーになります。
そこで、フォルダに入っている隣の番号同士で計算をしたいです。
例えば上記の例だと、
V(6).csv - V(1).csv;
V(8).csv - V(6).csv;
V(20).csv - V(8).csv;
というようにしたいです。
また、隣の番号同士で計算をするときに、その番号の差を記録したいです。
例えば上記の例だと、
V(6).csv - V(1).csv;であれば差は5
V(8).csv - V(6).csv;であれば差は2
V(20).csv - V(8).csv;であれば差は12
というようにしたいです。
以上、2つの事柄についてどのようにスクリプトを作成すればよいか教えていただきたいです。
0 Comments
Accepted Answer
交感神経優位なあかべぇ
on 14 Nov 2022
一番大きい値が20と分かっているならば、下記でどうでしょうか?
diffCsvList = {};% A - Bを行った答えを格納する変数
diffNumList = [];% 番号の差分を格納する変数
data_prev = [];
for i = 20 : -1 : 1
fileName = ['V(', num2str(i), ').csv'];
if isfile(fileName)
data = csvread(fileName);
if ~isempty(data_prev)
diffCsvList{end + 1, 1} = data_prev - data;
diffNumList(end + 1, 1) = i_prev - i;
end
data_prev = data;
i_prev = i;
end
end
一番大きな番号が分からないのであれば、下記はいかがでしょうか?
files = dir('*.csv');
fileNames = {files.name};% 現在のフォルダにある.csvのファイル名を取得する。
numberCell = regexp(fileNames, '^V((\d+))\.csv$', 'once', 'tokens');%V(番号).csvの番号を抽出する。
isVFile = cellfun(@(x) ~isempty(x), numberCell);
numberCell(~isVFile) = '';%V(番号).csv名以外のファイルがあった場合、それを除外する。
numberStr = cellfun(@(x) x, numberCell);
number = str2double(numberStr);
sortNumber = sort(number, 'descend');% 番号を降順にする。
diffCsvList = cell(length(sortNumber) - 1, 1);% A - Bを行った答えを格納する変数
diffNumList = zeros(length(sortNumber) - 1, 1);% 番号の差分を格納する変数
csvData1 = csvread(['V(', num2str(sortNumber(1)), ').csv']);
for i = 2 : length(sortNumber)
csvData2 = csvread(['V(', num2str(sortNumber(i)), ').csv']);
diffCsvList{i - 1} = csvData1 - csvData2;
diffNumList(i - 1) = sortNumber(i - 1) - sortNumber(i);
csvData1 = csvData2;
end
More Answers (1)
Kenji Nakayama
on 14 Nov 2022
n(1)=1,n(2)=6,n(3)=8,n(4)=20として,
for i = 1:3
A = csvread(V(n(i)).csv);
B = csvread(V(n(i+1)).csv);
B - A;
end
としてはどうでしょうか.
See Also
Categories
Find more on テキスト ファイル in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!