扫描矩阵并在 Matlab 中找到 2 个范围之间的最大值
Posted
技术标签:
【中文标题】扫描矩阵并在 Matlab 中找到 2 个范围之间的最大值【英文标题】:Scan a matrix and find the maximum value in Matlab between 2 ranges 【发布时间】:2019-02-28 22:18:09 【问题描述】:我有一个文本文件形式的矩阵,我希望使用 MATLAB 对其进行扫描,并扫描 2 个点(1.5 和 2)之间的最大值并将其用作阈值。
我写了一个代码,但它返回了一个错误。
[filename, pathname] = uigetfile('*txt', 'Pick text file');
data = dlmread(fullfile(pathname, filename));
t=data(:,1);
N = size(t,1);
m= max(data(1.5,2));
figure;
threshold = m;
文件错误(第 214 行) m= max(数据(1.5,2));
【问题讨论】:
您当前要求它使用 1.5 作为索引来查找值,这是不可能的。我建议阅读有关逻辑运算符的 matlab 帮助。 @etmuse 我知道数据范围在 1.5 和 2 之间,所以希望扫描数据并找到最大值并将其用作阈值 如前所述:您使用1.5
作为索引,data(A,B)
为您提供data
在A,B
给出的索引上的值。 MATLAB 要求您的索引是非负的实整数。使用逻辑运算符定义[1.5 2]
的范围,然后在结果集上使用max
。
【参考方案1】:
data(1.5,2)
不要求 data
的元素值介于 1.5
和 2
之间;它要求data
在“第 1.5”行和第 2 列上的元素,这显然是未定义的。索引必须是整数。
data
的元素值在1.5
和2
之间可以用
data(data > 1.5 & data < 2)
这样你就可以得到最大的使用
m = max(data(data > 1.5 & data < 2));
【讨论】:
以上是关于扫描矩阵并在 Matlab 中找到 2 个范围之间的最大值的主要内容,如果未能解决你的问题,请参考以下文章
如何完美对齐 2 个扫描的多项选择纸图像? (Matlab)
我可以在 matlab 矩阵的每一行和没有循环的向量之间找到共同值吗?