簡體   English   中英

MATLAB停留在復雜矩陣的范圍內

[英]MATLAB Staying in bounds of Complex matrix

我有一個復雜的矩陣cdata ,即2144x2048 我通過執行以下操作從cdata獲取大於指定threshold的元素:

[row, col] = find(abs(cdata) > threshold);

rowcol可以具有多個值。 然后,我獲取row和col值,執行計算以獲取N個實際x數據樣本和33個y數據樣本,如下所示:

xdata = real(cdata(row(i),col(i)-bw:col(i)+bw))
ydata = real(cdata(row(i)-bw:row(i)+bw,col(i)-bw:col(i)+bw))

其中bw是一個常數值,該常數確定我需要獲取的樣本數量。 在此計算過程中,特別是xdatacdata的列部分和ydatacdata的行部分,我超過了矩陣的界限,MATLAB引發以下錯誤:

??? Subscript indices must either be real positive integers or logicals

如何確保不超出界限? 我可以跳過行/列對,如果它會超出界限的話。

您遇到問題的原因是因為您沒有限制搜索距離矩陣邊緣的bw較近。 這意味着有可能在矩陣邊緣附近找到高於閾值的值。 當您從這些索引中添加或減去bw時,您將超出范圍。 您可以像這樣限制搜索。

[row, col] = find(abs(cdata(bw+1:end-bw,bw+1:end-bw)) > threshold);
row = row + bw;
col = col + bw;

這樣可以確保您的行索引和列索引在范圍之內,因此當您抓住圍繞它們的區域時,不會超出范圍。

附帶說明。 代碼中的ydata變量索引矩陣的整個正方形區域,而xdata僅索引行的一部分。 您的ydata實際上應該是ydata = real(cdata(row(i)-bw:row(i)+bw, col(i)))嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM