Can MATLAB increment multiple rows of array data?

4 次查看(过去 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?

采纳的回答

Brad
Brad 2013-4-12
PT, I had to make a couple minor modifications. But this runs like a champ! Thank you.

更多回答(1 个)

PT
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);
  1 个评论
Brad
Brad 2013-5-21
PT, this works great. I honked up the accepted answer button and somehow accepted an answer by me that doesn't exist.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Live Scripts and Functions 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by