MATLAB: Problem in the for loop to find maximum y value

forfor loopindexindexingmaximum

Hi, my for loop keeps repeating the same third value for the maximum index value. Can anyone please check it for me? the full code is:
for k = 1:3
Driftt = sprintf('Drift%d.out', k);
Reactt = sprintf('React%d.out', k);
matDrift = importdata(fullfile(Driftt));
matReact = importdata(fullfile(Reactt));
x= matDrift(:,2);
y= -sum(matReact(:,2:11),2);
plot(x,y)
hold on;
%
sort = zeros(N,2);
for i=1:N
[valy,idx] = max(y);
sort(i,:) = [x(idx,1),valy];
hold on;
end
end

Best Answer

The code contains several problems:
1. fullfile(Driftt) does not do anything. Define the directory in addition:
Folder = cd;
...
matDrift = importdata(fullfile(Folder, Driftt));
2. Do not use "sort" as name of a variable, because this shadows the important function with the same name. This is not an error directly, but trying to use the function|sort()| afterwards produces unexpected behavior.
3. What is the value of "N"?
Perhaps you want:
sorted = zeros(N,2);
for i = 1:N
[valy, idx] = max(y(i, :)); % or y(:, i)?
sorted(i,:) = [x(idx,1), valy];
% hold on; Completely useless here, remove it
end
hold set the 'NextPlot' property of the current axes such that following plot commands do not remove existing line objects. But you are nor drawing here.
You could do this without a loop also:
[valy, idx] = max(y, [], 2); % or max(y, [], 1) ?

sorted = [x(idx, 1), valy];
Perhaps you have to modify the dimensions for the concatenation.
4. The variable "sort" (renamed to "sorted" in my code) is overwritten. Perhaps you want:
sorted = cell(1, 3);
...
[valy, idx] = max(y, [], 2); % or max(y, [], 1) ?
sorted{k} = [x(idx, 1), valy];