matlab 索引图像显示矩阵矩阵索引问题

只需一步,快速开始
扫一扫,访问微社区
请完成以下验证码
查看: 73|回复: 4|关注: 0
三维矩阵索引
<h1 style="color:# 麦片财富积分
新手, 积分 10, 距离下一级还需 40 积分
大家好,我创建了一个三维矩阵,规模是10*100*30,但访问的时候出现了问题,请问是怎么回事呢?
试图访问 X(1,1,2);由于 size(X)=[10,100,1],索引超出范围。
这是一部分的代码:
for i = 1:10
&&for j = 1:100
& & for k = 1:30
& && &F1 = F0 + V(i,j,k)*X(i,j,k);
论坛优秀回答者
<h1 style="color:#21 麦片财富积分
关注者: 92
那就看看你的X的结构咯。
[10,100,1]
X(1,1,2),不是超出了吗?第三维
<h1 style="color:# 麦片财富积分
但是我自己 size(X)却是 [10,100,30]啊
<h1 style="color:# 麦片财富积分
自己顶一下
<h1 style="color:# 麦片财富积分
for i = 1:10
&&for j = 1:100
& & for k = 1:30
& &&&x(i,j,k)=i+j+k;
&& size(x)
& & 10& &100& & 30
&& x(1,1,2)
楼主应该是x三维矩阵的赋值时没有让x的规模为10*100*30
站长推荐 /3
用 MATLAB/Simulink开发自动驾驶功能的实例研究
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区蚁群算法-----索引超出矩阵维度问题【matlab吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:199,915贴子:
蚁群算法-----索引超出矩阵维度问题收藏
这个程序最后显示索引超出矩阵维度,这个该怎么找出具体是超出哪个矩阵的维度了?索引是C那个大矩阵吗? MATLAB运行显示出错的地方是第三步中的 to_visit=J(Select(1));
C是一个280*2的矩阵,代表280个城市的坐标。m=280;Alpha=1;Beta=5;
% Beta 表征启发式因子重要程度的参数Rho=0.1;
% Rho 信息素蒸发系数NC_max=500;
% NC_max 最大迭代次数Q=100;
% Q 信息素增加强度系数%%-------------------------------------------------------------------------%% 主要符号说明%% C n个城市的坐标,n×2的矩阵%% NC_max 最大迭代次数%% m 蚂蚁个数%% Alpha 表征信息素重要程度的参数%% Beta 表征启发式因子重要程度的参数%% Rho 信息素蒸发系数%% Q 信息素增加强度系数%% R_best 各代最佳路线%% L_best 各代最佳路线的长度%%=========================================================================%%第一步:变量初始化n=size(C,1);%n表示问题的规模(城市个数)D=zeros(n,n);%D表示完全图的赋权邻接矩阵for i=1:nfor j=1:nif i~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;elseD(i,j)=
%i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示endD(j,i)=D(i,j);
%对称矩阵endendEta=1./D;
%Eta为启发因子,这里设为距离的倒数Tau=ones(n,n);
%Tau为信息素矩阵Tabu=zeros(m,n);
%存储并记录路径的生成NC=1;
%迭代计数器,记录迭代次数R_best=zeros(NC_max,n);
%各代最佳路线L_best=inf.*ones(NC_max,1);
%各代最佳路线的长度L_ave=zeros(NC_max,1);
%各代路线的平均长度while NC&=NC_max
%停止条件之一:达到最大迭代次数,停止%%第二步:将m只蚂蚁放到n个城市上Randpos=[];
%随即存取for i=1:(ceil(m/n))Randpos=[Randpos,randperm(n)];endTabu(:,1)=(Randpos(1,1:m))&#39;;
%此句不太理解?%%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游for j=2:n
%所在城市不计算for i=1:m
visited=Tabu(i,1:(j-1)); %记录已访问的城市,避免重复访问J=zeros(1,(n-j+1));
%待访问的城市P=J;
%待访问城市的选择概率分布Jc=1;for k=1:nif length(find(visited==k))==0
%开始时置0J(Jc)=k;Jc=Jc+1;
%访问的城市个数自加1endend%下面计算待选城市的概率分布for k=1:length(J)P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);endP=P/(sum(P));%按概率原则选取下一个城市Pcum=cumsum(P);
%cumsum,元素累加即求和Select=find(Pcum&=rand); %若计算的概率大于原来的就选择这条路线to_visit=J(Select(1));Tabu(i,j)=to_endendif NC&=2Tabu(1,:)=R_best(NC-1,:);end%%第四步:记录本次迭代最佳路线L=zeros(m,1);
%开始距离为0,m*1的列向量for i=1:mR=Tabu(i,:);for j=1:(n-1)L(i)=L(i)+D(R(j),R(j+1));
%原距离加上第j个城市到第j+1个城市的距离endL(i)=L(i)+D(R(1),R(n));
%一轮下来后走过的距离endL_best(NC)=min(L);
%最佳距离取最小pos=find(L==L_best(NC));R_best(NC,:)=Tabu(pos(1),:); %此轮迭代后的最佳路线L_ave(NC)=mean(L);
%此轮迭代后的平均距离NC=NC+1;
%迭代继续%%第五步:更新信息素Delta_Tau=zeros(n,n);
%开始时信息素为n*n的0矩阵for i=1:mfor j=1:(n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);
%此次循环在路径(i,j)上的信息素增量endDelta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);%此次循环在整个路径上的信息素增量endTau=(1-Rho).*Tau+Delta_T %考虑信息素挥发,更新后的信息素%%第六步:禁忌表清零Tabu=zeros(m,n);
%%直到最大迭代次数end%%第七步:输出结果Pos=find(L_best==min(L_best)); %找到最佳路径(非0为真)Shortest_Route=R_best(Pos(1),:); %最大迭代次数后最佳路径Shortest_Length=L_best(Pos(1)); %最大迭代次数后最短距离subplot(1,2,1)
%绘制第一个子图形DrawRoute(C,Shortest_Route)
%画路线图的子函数subplot(1,2,2)
%绘制第二个子图形plot(L_best)hold on
%保持图形plot(L_ave,&#39;r&#39;)title(&#39;平均距离和最短距离&#39;)
%标题function DrawRoute(C,R)%%=========================================================================%% DrawRoute.m%% 画路线图的子函数%%-------------------------------------------------------------------------%% C Coordinate 节点坐标,由一个N×2的矩阵存储%% R Route 路线%%=========================================================================N=length(R);scatter(C(:,1),C(:,2));hold onplot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)],&#39;g&#39;)hold onfor ii=2:Nplot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)],&#39;g&#39;)hold onendtitle(&#39;旅行商问题优化结果 &#39;)
登录百度帐号模仿 matlab 矩阵索引与赋值【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:192,395贴子:
模仿 matlab 矩阵索引与赋值收藏
继承np.matrix,定义新类,模仿Matlab矩阵,从1开始计数,而不是0.定义类 class myMat(np.matrix)
# np == numpy
索引与赋值方法见下图.其中函数Minus1表示只对整数减1,其余(None)不变. 索引方法没有问题,但是赋值方法出了问题。a[1,2]=5,这样赋值没有问题。a[1,:]=[3,3] 没报错但是a没有变化,而a[1,1:2]=[4,4]报错。与之等价的是b=np.matrix(&#39;1,2;3,4&#39;); b[0,slice(0,2)]=[4,4]却是正确的。这是为什么?怎么纠正?
登录百度帐号当前位置:
&matlab 超出矩阵维度问题
matlab 超出矩阵维度问题
作者 xwndf250
问题如图 Index exceeds matrix dimensions.&&应该怎么解决?目的是想做t与y(1)~y(5)的2维曲线。
这是下标越界错误,也就是下标超出了矩阵的最大下标
你检查一下y矩阵的size,有y(5)吗?
引用回帖:: Originally posted by libralibra at
这是下标越界错误,也就是下标超出了矩阵的最大下标
你检查一下y矩阵的size,有y(5)吗? 这个...怎么检查y矩阵大小?还有就是“下表超出了矩阵最大下标”是什么意思?我是小白,一些术语不懂。原题是这样的,有S I R Mi Ml这五个变量,想求t和这五个变量的变化关系。
具体情况如下
引用回帖:: Originally posted by xwndf250 at
这个...怎么检查y矩阵大小?还有就是“下表超出了矩阵最大下标”是什么意思?我是小白,一些术语不懂。原题是这样的,有S I R Mi Ml这五个变量,想求t和这五个变量的变化关系。
具体情况如下
http://good.gd/242 ... 在第三行dy之前输入
然后运行一下看控制台输出的矩阵维数是几乘几?
引用回帖:: Originally posted by libralibra at
在第三行dy之前输入
然后运行一下看控制台输出的矩阵维数是几乘几?... 第三行输入size(y) 然后回车运行?没反应啊...我是昆虫专业的,这个以前没接触过,现在还在入门阶段,有些东西不懂...能不能说下具体操作
这是我的程序,求大神帮忙:
function dy=system(t,y)
a=0.1;b=0.5;r=0.1;ka=0.5;kir=0.01;kil=0.01;kls=0.1;
dy=[r*b*y(1)^2-r*(2*a-b)*y(2)*y(1)+r*b*(y(4)+y(5))*y(1)+kls*y(5);
-r*b*y(1)^2-r*(-2*a+b)*y(2)*y(1)-r*b*(y(4)+y(5))*I-(r-ka)*y(1);
r*y(1)+kir*y(4);
ka*y(1)-kil*y(4)-kir*y(4);
kil*y(4)-kls*y(5)];
解决了的话我追加金币,急求
引用回帖:: Originally posted by xwndf250 at
第三行输入size(y) 然后回车运行?没反应啊...我是昆虫专业的,这个以前没接触过,现在还在入门阶段,有些东西不懂...能不能说下具体操作
这是我的程序,求大神帮忙:
function dy=system(t,y)
a=0.1;b=0.5;r=0 ... 你原来怎么运行出错了,就把下面的代码代替原system函数后重新运行一次
看看控制台输出的y的维数是多少
就加了一行size(y)CODE: function dy=system(t,y)
a=0.1;b=0.5;r=0.1;ka=0.5;kir=0.01;kil=0.01;kls=0.1;
size(y) % 如果运行到下面一行出错,这一行会在控制台输出y的维数
dy=[r*b*y(1)^2-r*(2*a-b)*y(2)*y(1)+r*b*(y(4)+y(5))*y(1)+kls*y(5);
-r*b*y(1)^2-r*(-2*a+b)*y(2)*y(1)-r*b*(y(4)+y(5))*I-(r-ka)*y(1);
r*y(1)+kir*y(4);
ka*y(1)-kil*y(4)-kir*y(4);
kil*y(4)-kls*y(5)];
5个变量,只给了2个初值,貌似不妥。
引用回帖:: Originally posted by southpark007 at
5个变量,只给了2个初值,貌似不妥。 除了1/6和5/6外,其他变量都为0。
24小时热帖
下载小木虫APP
与700万科研达人随时交流Matlab矩阵逻辑索引
我的图书馆
Matlab矩阵逻辑索引
matlab可以使用逻辑索引。这里要注意的是,要求索引向量为逻辑向量,其它向量无效。Example:% Creating the training and testing sets%tr_n = 200;tr_set = abs(rand(tr_n,2))*100;tr_labels = (tr_set(:,1)-tr_set(:,2) & 0) + 1;figure(1);plot(tr_set(:,1),tr_set(:,2),'b.')% Displaying the training &setsfigure(2);indices = tr_labels==1;plot(tr_set(indices,1),tr_set(indices,2),'b*');indices = ~plot(tr_set(indices,1),tr_set(indices,2),'ro');title('Training set');上面是figure(1)&&上面是figure(2)&
喜欢该文的人也喜欢

我要回帖

更多关于 matlab中索引超出矩阵维度 的文章

 

随机推荐