最小值和最大值的八度代码以及查找索引
Octave Code for Minimum and Max and finding index
大家好,
我一直在尝试编写此程序以查找 行向量 中的最大值和最小值,但我在分配它们的维度 indexes 时遇到了问题
我不知道出了什么问题
C 和 D 始终显示为“1”
我是初学者,你能帮帮我吗
function [low,high,index1,index2] = Q1(x)
low = x(1);
high = x(1);
index1 = x(1,2);
index2 = x(1,2);
for i = 2:length(x),
if x(i) < low,
low = x(i);
index1 = find(low);
elseif x(i) > high,
high = x(i);
index2 = find(high);
endif;
endfor;
endfunction
看来您的函数可以使用 min
和 max
函数非常快速地完成而无需循环。假设 x
是一个行向量:
>> x = [8 4 9 7 6 4 2 3 5 6]
x =
8 4 9 7 6 4 2 3 5 6
>> [min_x, min_x_loc] = min (x)
min_x = 2
min_x_loc = 7
>> [max_x, max_x_loc] = max (x)
max_x = 9
max_x_loc = 3
如果你想把它放在一个函数中,使用你的符号:
function [low, high, index1, index2] = Q1(x)
[low, index1] = min (x);
[high, index2] = max (x);
end
(没有必要,但使用 end
而不是 endfuntion
确实保留了 matlab 兼容性)
index1
和 index2
应以 1 开头,因为 low
和 high
应以元素 x(1)
开头。当您检测到条件时,将 x(i)
分配给值,将 i
分配给 relative index
.
function [low,high,index1,index2] = Q1(x)
low = x(1);
high = x(1);
index1 = 1;
index2 = 1;
for i = 2:length(x),
if (x(i) < low)
low = x(i);
index1 = i;
elseif (x(i) > high)
high = x(i);
index2 = i;
endif
endfor;
endfunction
使用随机数据进行测试
octave:1> x=rand(10,1)
x =
0.90588
0.20695
0.46777
0.67169
0.69547
0.24960
0.16570
0.62231
0.18489
0.36467
octave:2> Q1(x)
ans = 0.16570
octave:3> [low,high,index_low,index_high]=Q1(x)
low = 0.16570
high = 0.90588
index_low = 7
index_high = 1
大家好, 我一直在尝试编写此程序以查找 行向量 中的最大值和最小值,但我在分配它们的维度 indexes 时遇到了问题 我不知道出了什么问题 C 和 D 始终显示为“1” 我是初学者,你能帮帮我吗
function [low,high,index1,index2] = Q1(x)
low = x(1);
high = x(1);
index1 = x(1,2);
index2 = x(1,2);
for i = 2:length(x),
if x(i) < low,
low = x(i);
index1 = find(low);
elseif x(i) > high,
high = x(i);
index2 = find(high);
endif;
endfor;
endfunction
看来您的函数可以使用 min
和 max
函数非常快速地完成而无需循环。假设 x
是一个行向量:
>> x = [8 4 9 7 6 4 2 3 5 6]
x =
8 4 9 7 6 4 2 3 5 6
>> [min_x, min_x_loc] = min (x)
min_x = 2
min_x_loc = 7
>> [max_x, max_x_loc] = max (x)
max_x = 9
max_x_loc = 3
如果你想把它放在一个函数中,使用你的符号:
function [low, high, index1, index2] = Q1(x)
[low, index1] = min (x);
[high, index2] = max (x);
end
(没有必要,但使用 end
而不是 endfuntion
确实保留了 matlab 兼容性)
index1
和 index2
应以 1 开头,因为 low
和 high
应以元素 x(1)
开头。当您检测到条件时,将 x(i)
分配给值,将 i
分配给 relative index
.
function [low,high,index1,index2] = Q1(x)
low = x(1);
high = x(1);
index1 = 1;
index2 = 1;
for i = 2:length(x),
if (x(i) < low)
low = x(i);
index1 = i;
elseif (x(i) > high)
high = x(i);
index2 = i;
endif
endfor;
endfunction
使用随机数据进行测试
octave:1> x=rand(10,1)
x =
0.90588
0.20695
0.46777
0.67169
0.69547
0.24960
0.16570
0.62231
0.18489
0.36467
octave:2> Q1(x)
ans = 0.16570
octave:3> [low,high,index_low,index_high]=Q1(x)
low = 0.16570
high = 0.90588
index_low = 7
index_high = 1