how to solve an error ?
조회 수: 1 (최근 30일)
이전 댓글 표시
hi, I have written a code for text input files. everything is working fine except last 3 lines of code!!! i am getting this error
///////////////////////// Error using cat Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 83) m{n} = cat(1,c{:,n}); ////////////////////////////////////////////
what I just want to do is to get/convert the data from cell 'alldata' to simple array 'rawdata' using cell2mat I tried so much I don't know what is the problem. I have attached the files also. please help. so much frustrated.
% read all text file from folder
clear all
close all
clc
initialdir = cd();
set(0, 'DefaultAxesFontSize',15)
list = dir('*.txt');
delimiter = '\t';
formatSpec = '%s%s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%s%s%s%[^\n\r]';
alldata = [];
for file = 1:length(list)
fid = fopen(list(file).name);
dataArray = textscan(fid, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false);
%%Close the text file.
fclose(fid);
%%Convert the contents of columns containing numeric strings to numbers.
raw = repmat({''},length(dataArray{1}),length(dataArray)-1);
for col=1:length(dataArray)-1
raw(1:length(dataArray{col}),col) = dataArray{col};
end
raw(1,:) = [];
alldata = [alldata;raw];
end
rawdata(:,1) = datenum((alldata(:,1)),'yyyy-mm-dd') + datenum(alldata(:,2),'HH:MM') - datenum('00:00','HH:MM'); rawdata(:,2) = str2num(cell2mat(alldata(:,3)));
rawdata(:,3) = str2num(cell2mat(alldata(:,4)));
rawdata(:,4) = str2num(cell2mat(alldata(:,5)));
댓글 수: 0
채택된 답변
추가 답변 (1개)
Jan
2018년 5월 15일
If you post the complete error message, the readers can know, which line is failing. I guess it is:
rawdata(:,2) = str2num(cell2mat(alldata(:,3)));
You have padded the raw data with empty string ''. Then cell2mat tries to create a CHAR matrix, but the rows or columns have inconsistent lengths. One solution can be to apply str2num directly on the cell array. Or better use the safer str2double. In addition you might want to pad the data with '0'.
Is creating a matrix from the single columns of dataArray really useful, if all you want to do is to split it up to columns afterwards again?
참고 항목
카테고리
Help Center 및 File Exchange에서 Text Files에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!