wxl789 发表于 2008-7-11 17:00

怎么按列调入数据?

现在有一个3*1000的矩阵
我想按列调入另一个循环程序的子程序中
主程序是和时间相关的
主程序每执行子程序一次
就调入一列这个矩阵的数据
该怎么实现呢??

求助!!
谢谢!!

花如月 发表于 2008-7-11 17:10

数据的读取,直接读就行。假设数据存在A中:
A(:,K)就是第k列的数据了,根据需要取k的值就行了。

注意“冒号运算符”的使用

wxl789 发表于 2008-7-11 17:21

回复 2楼 的帖子

主要是那个ode45函数
现在他是一个黑箱
怎么知道他执行的步数呢?

wxl789 发表于 2008-7-11 17:29

也许没把问题表达清楚,请看下边的例子:

主程序:
u0 = ;
step = 0.01;
t0 = 0;
tf = 100;
tspan=;
= ode45(@mysysdelay,tspan,u0);


子程序:
function du = mysysdelay(t,u)

w = importdata('w.mat');% (调入整体矩阵)

J = p+w(:,i);   %取出w的一列和p相加
du(1) = J(1);
du(2) = J(2);

想实现这个目的,该怎么编写程序呢??

谢谢!!

花如月 发表于 2008-7-11 17:42

熟悉ode函数的看下什么问题,我没matlab

无水1324 发表于 2008-7-11 21:32

回复 4楼 的帖子

楼主的这个子程序中的u是在表达式中那里出现的?
好像du(1) = J(1);
du(2) = J(2);,
中都没有?

另外,ode45是变步长的,控制需要用events函数

wxl789 发表于 2008-7-11 22:24

回复 6楼 的帖子

u是一个列向量,就是写成的微分方程表达形式的y,du就是yp
前边还有好多计算的表达式,太长了,贴出来怕大家看着没耐心,就简化之后找了个简单的例子说明问题。。。。

主程序(解微分方程的程序:ode45函数)执行的时候,应该是每执行一步,调用一下子程序(微分方程的m文件),我现在就是需要在这个子程序中,让他每次执行的时候,也只调用我数组的其中一列。。。。

这个该怎么解决呢???

谢谢无水!!!

[ 本帖最后由 wxl789 于 2008-7-11 22:34 编辑 ]

francexuqu 发表于 2008-12-6 00:25

我觉得用ode时候
主函数中自变量是离散的;
但是作为被解得函数,你说的那个J = p+w(:,i); 他们只是系数,他们随t的变化是一一对应的,不可能一个时刻t对应一列系数,所以说你的程序有问题
不知我这样说是不是能解决你的问题

例如:
dy/dt=f(t)*t+g(t)*t
f(t)如果作为变量,可在使用的函数中控制,不是你这个样子的
如果想外界控制变量的话
用global
页: [1]
查看完整版本: 怎么按列调入数据?