Can MATLAB increment multiple rows of array data?
3 次查看(过去 30 天)
显示 更早的评论
Can MATLAB increment multiple rows of array data?
Guys, got an interesting problem pertaining to incremenation. I have a space delimited text file contain several rows of data that look like this:
33000.000 33000.060 -5277.000000 1124.000000 -4138.000000 -3.000000 -5.000000
33001.000 33001.060 -5278.000000 1125.000000 -4139.000000 -4.000000 -6.000000
33002.000 33002.060 -5279.000000 1126.000000 -4140.000000 -5.000000 -7.000000
For processing purposes, I need to increment each data element by an equal value (in each row) several times and save the resulting data to a file. For example, if I want to increment each row equally by .2, the output would be:
33000.000 33000.060 -5277.000000 1124.000000 -4138.000000 -3.000000 -5.000000
33000.200 33000.260 -5277.200000 1124.200000 -4138.200000 -3.200000 -5.200000
33000.400 33000.460 -5277.400000 1124.400000 -4138.400000 -3.400000 -5.400000
33000.600 33000.660 -5277.600000 1124.600000 -4138.600000 -3.600000 -5.600000
33000.800 33000.860 -5277.800000 1124.800000 -4138.800000 -3.800000 -5.800000
33001.000 33001.060 -5278.000000 1125.000000 -4139.000000 -4.000000 -6.000000
33001.200 33001.260 -5278.200000 1125.200000 -4139.200000 -4.200000 -6.200000
33001.400 33001.460 -5278.400000 1125.400000 -4139.400000 -4.400000 -6.400000
33001.600 33001.660 -5278.600000 1125.600000 -4139.600000 -4.600000 -6.600000
33001.800 33001.860 -5278.800000 1125.800000 -4139.800000 -4.800000 -6.800000
33002.000 33002.060 -5279.000000 1126.000000 -4140.000000 -5.000000 -7.000000
33002.200 33002.260 -5279.200000 1126.200000 -4140.200000 -5.200000 -7.200000
33002.400 33002.460 -5279.400000 1126.400000 -4140.400000 -5.400000 -7.400000
33002.600 33002.660 -5279.600000 1126.600000 -4140.600000 -5.600000 -7.600000
33002.800 33002.860 -5279.800000 1126.800000 -4140.800000 -5.800000 -7.800000
33003.000 33003.060 -5280.000000 1127.000000 -4141.000000 -6.000000 -8.000000
I’ve searched for an existing MATLAB function that will accomplish this and found nothing.
Can something like this be done in MATLAB? If so, any ideas?
0 个评论
采纳的回答
更多回答(1 个)
PT
2013-4-11
%%Load
filename = 'test.txt';
fh = fopen(filename, 'r');
Table = [];
Rows = {};
ncol = [];
j = 0;
while ~feof(fh)
line = fgetl(fh);
tokens = regexp(line, '(-?\d+(?:\.\d+)?)', 'tokens');
j = j + 1;
ncol(j,1) = length(b);
row = nan(1,ncol(j));
for i = 1:ncol
row(i) = str2double(tokens{i});
end
Rows{j,1} = row;
end
fclose(fh);
ncol_max = max(ncol);
Table = nan(j, ncol_max);
for i = 1:length(Rows)
Table(i, 1:ncol(i)) = Rows{i};
end
%%Process
IncValues = [0 0.2 0.4 0.6 0.8];
IncValues = IncValues(:);
[nrow, ncol] = size(Table);
NewTable = cell(nrow,1);
for i = 1:size(Table,1)
NewTable{i,1} = IncValues*ones(1,ncol) + ones(size(IncValues,1),1) * Table(i,:);
end
NewTable = cat(1,NewTable{:});
%%Save
newfilename = 'testout.txt';
fh = fopen(newfilename, 'w');
for i = 1:size(NewTable,1)
fprintf(fh, '%s\n', num2str(NewTable(i,:),'%f\t'));
end
fclose(fh);
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!