声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1297|回复: 7

[编程技巧] Index exceeds matrix dimensions 出错求助

[复制链接]
发表于 2008-1-8 11:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function f1=f(x)               %目标函数
syms x
f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
function f2=f(x)
f2=x(:,1).*(1-x(:,2))+10;
出现错误
??? Index exceeds matrix dimensions.
Error in ==> f at 3
f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
我看看了论坛里的聚宝盆的帖子http://forum.vibunion.com/forum/thread-46001-1-1.html,但是还是不会改,大家帮帮忙,急!拜托了

[ 本帖最后由 eight 于 2008-1-8 11:13 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-1-8 11:13 | 显示全部楼层
原帖由 zheng720 于 2008-1-8 11:02 发表
function f1=f(x)               %目标函数
syms x
f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
function f2=f(x)
f2=x(:,1).*(1-x(:,2))+10;
出现错误
??? Index exceeds matrix dimensions.
Error in ==>  ...


为何对输入参数进行重新类型定义(syms)?
 楼主| 发表于 2008-1-8 11:20 | 显示全部楼层
我只是想在函数定义里不想给x赋具体的值,所以就想这样做,不知道对不对,eight帮忙改改吧,我要达到的目的就是使我使用这两个函数时,先不给x赋值,下面的程序运行里会给x赋值

当我把syms x去掉后又出现了错误: Input argument "x" is undefined.,估计需要从命令窗口输入x的值,但是我不想这样,因为x是两个值组成的,而且x1、x2的取值范围不一样,我不知道怎么设定,所以就想这样来设,结果出错了,郁闷,帮忙看看把

[ 本帖最后由 zheng720 于 2008-1-8 11:39 编辑 ]
发表于 2008-1-8 11:57 | 显示全部楼层
  1. function f1=f(x)               %目标函数
  2. f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
  3. function f2=f(x)
  4. f2=x(:,1).*(1-x(:,2))+10;
复制代码

x是一个矩阵?

应该这样就可以了啊
或许你在主程序里面没有定义x
 楼主| 发表于 2008-1-8 12:12 | 显示全部楼层
function f1=f(x)  %目标函数
x=zeros[100,2];
f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
function f2=f(x)
f2=x(:,1).*(1-x(:,2))+10;
改成这个之后还是出错:Unbalanced or misused parentheses or brackets.
发表于 2008-1-8 12:30 | 显示全部楼层
原帖由 zheng720 于 2008-1-8 12:12 发表
function f1=f(x)  %目标函数
x=zeros[100,2];
f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
function f2=f(x)
f2=x(:,1).*(1-x(:,2))+10;
改成这个之后还是出错:Unbalanced or misused parentheses or brackets.

x=zeros(100,2);

建议多看看基础书
发表于 2008-1-8 12:32 | 显示全部楼层
原帖由 zheng720 于 2008-1-8 11:20 发表
我只是想在函数定义里不想给x赋具体的值,所以就想这样做,不知道对不对,eight帮忙改改吧,我要达到的目的就是使我使用这两个函数时,先不给x赋值,下面的程序运行里会给x赋值

当我把syms x去掉后又出现了错 ...

看不懂,是否这样:

function y=f1
x=zeros(100,2);
x(:,1) = 1;
x(:,2) = 2;
y=x(:,1).*x(:,1)/4+x(:,2).*x(:,2)/4;
 楼主| 发表于 2008-1-8 12:57 | 显示全部楼层
是这样的,我下面是用遗传算法,对这两个函数进行优化,但是现在我假设对x赋值了之后,存在一个问题,我要是在后面对x赋值的时候,会不会影响呢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 19:19 , Processed in 0.100163 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表