Exceeds the number of array elements (0).
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
Hi everyone,
I have got the error in the code below, What should I do to fix it?
Code
% convert finite values to indices between 1 and map length
n = size(map, 1);
inds = (img(valid)-bounds(1))/(bounds(end)-bounds(1))*(n-1);
inds = floor(min(max(inds, 0), n-1))+1;
Error
Index exceeds the number of array elements (0).
Error in double2rgb (line 44)
ins = (img(valid)-bounds(1))/(bounds(end)-bounds(1))*(n-1);
採用された回答
Voss
2023 年 1 月 24 日
Either img or bounds (or both) is empty.
Check img and bounds and figure out why one or both is not what you expect.
9 件のコメント
Neda Deljavan
2023 年 1 月 25 日
編集済み: Stephen23
2023 年 1 月 26 日
"img" and "bounds" are in the function "double2rgb.m" that I used in my code.
COPYRIGHT code removed. Please do not post copyright code on this forum. Original source:
I got the error in using the above function in my code below:
Code:
%Rescaling network features for plotting networks
grafo = graph(W); % converting matrix to graph list of edges
links = table2array(grafo.Edges); % converting the graph object into a table
wij = links(:,3); % taking only link weigths
a = 1; b = 10; % range for rescaling limits
wij = ( (wij - min(wij)).*(b-a) )/(max(wij) - min(wij)); % rescaling formula
wij = wij+0.5;
rgb = squeeze(double2rgb(wij, colormap(jet))); close % mapping values to RGB colors with pallete JET
a = 1; b = 10; % range for rescaling limits
wij = ( (wij - min(wij)).*(b-a) )/(max(wij) - min(wij)); % rescaling formula
wij = wij+0.5;
So, I could not deal with the error. Please help me.
Thanks in advance.
Voss
2023 年 1 月 26 日
Like I said, if img is empty, then you'll get the error you got.
Maybe wij is empty because links has zero rows. I don't know because I don't have your data. You'll have to check on that.
Neda Deljavan
2023 年 1 月 26 日
Yes, you are right. wij is NaN. What should I do?
I will display codes before wij step by step below:
grafo = graph(W);



links = table2array(grafo.Edges);

wij = links(:,3);

a = 1; b = 10; % range for rescaling limits
wij = ( (wij - min(wij)).*(b-a) )/(max(wij) - min(wij)); % rescaling formula
wij = wij+0.5;

So, due to this NaN, rgb does not run:
rgb = squeeze(double2rgb(wij, colormap(jet)));
What should I do? Thanks in advance for your help.
Walter Roberson
2023 年 1 月 26 日
Do not use double2rgb(). Use
rgb = ind2rgb(uint8(rescale(wij, 0, 255)), jet);
Neda Deljavan
2023 年 1 月 27 日
Yesss. It solved :) Thanksss a billion.
Also, I add 0.01 in the denominator of wij and it works:
wij = ( (wij - min(wij)).*(b-a) )/((max(wij) - min(wij))+0.01);
Neda Deljavan
2023 年 1 月 27 日
Due to wij is NaN.
I fixed the problem of wij, but I got the error in the next step which is:
Code:
%% step24: Plotting a Functional Network
figure
hold on;
% ind=find(isnan(wij));
% wij(ind)=0.01;
for ll = 1 : length(links) %% plotting links
line([EEG.chanlocs(links(ll,1)).X, EEG.chanlocs(links(ll,2)).X], [EEG.chanlocs(links(ll,1)).Y, EEG.chanlocs(links(ll,2)).Y], 'LineWidth', wij(ll), 'Color', rgb(ll,:) );
end
colormap(jet);
% colorbar
for nn = 1 : 4 %% plotting nodes
plot(EEG.chanlocs(nn).X, EEG.chanlocs(nn).Y, 'ro', 'MarkerSize', st(nn), 'MarkerFaceColor', 'y')
text(EEG.chanlocs(nn).X+0.5, EEG.chanlocs(nn).Y, EEG.chanlocs(nn).labels, 'FontSize', 11);
end
view([270 90]); %% rotating to vertical view
axis equal; axis off;
set(gcf, 'units','normalized','outerposition',[0 0 1 1]) %EXPANDING FIGURE ON SCREEN
Error:
Index in position 1 exceeds array bounds (must not exceed 1).
Error in NEW1 (line 452)
line([EEG.chanlocs(links(ll,1)).X, EEG.chanlocs(links(ll,2)).X], [EEG.chanlocs(links(ll,1)).Y, EEG.chanlocs(links(ll,2)).Y], 'LineWidth', wij(ll),
'Color', rgb(ll,:) );
Walter Roberson
2023 年 1 月 27 日
We do not have your current code, and we do not have your data to test with.
As outside observers, we have no reason to expect that EEG.chanlocs is not (for example) a transfer function that does not have an X field at all. Or maybe EEG is a graph() object that you added a chanlocs property to. We have no way of knowing.
Neda Deljavan
2023 年 2 月 7 日
After the section above, for running code below I've got an error, what's the problem?
Code:
for ll = 1 : length(links) %% plotting links
line([EEG.chanlocs(links(ll,1)).X, EEG.chanlocs(links(ll,2)).X], [EEG.chanlocs(links(ll,1)).Y, EEG.chanlocs(links(ll,2)).Y], 'LineWidth', wij(ll), 'Color', rgb(ll,:) );
end
colormap(jet);
% colorbar
for nn = 1 : 4 %% plotting nodes
plot(EEG.chanlocs(nn).X, EEG.chanlocs(nn).Y, 'ro', 'MarkerSize', st(nn), 'MarkerFaceColor', 'y')
text(EEG.chanlocs(nn).X+0.5, EEG.chanlocs(nn).Y, EEG.chanlocs(nn).labels, 'FontSize', 11);
end
view([270 90]); %% rotating to vertical view
axis equal; axis off;
set(gcf, 'units','normalized','outerposition',[0 0 1 1]) %EXPANDING FIGURE ON SCREEN
Error:
Error using line
Value should be a finite number greater than 0
Error in NEW1 (line 452)
line([EEG.chanlocs(links(ll,1)).X, EEG.chanlocs(links(ll,2)).X], [EEG.chanlocs(links(ll,1)).Y, EEG.chanlocs(links(ll,2)).Y], 'LineWidth', wij(ll),
'Color', rgb(ll,:) );
Thanks in advance for your help.
Bests,
Neda
My guess is that wij(ll) is NaN or Inf or a non-positive number.
You can see below that those cases throw the error you got:
try
line([1 2],[1 2],'LineWidth',NaN)
catch e
delete(gca())
disp(e.message);
end
Value should be a finite number greater than 0
try
line([1 2],[1 2],'LineWidth',Inf)
catch e
delete(gca())
disp(e.message);
end
Value should be a finite number greater than 0
try
line([1 2],[1 2],'LineWidth',0)
catch e
delete(gca())
disp(e.message);
end
Value should be a finite number greater than 0
try
line([1 2],[1 2],'LineWidth',-1)
catch e
delete(gca())
disp(e.message);
end
Value should be a finite number greater than 0
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Antennas, Microphones, and Sonar Transducers についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
