声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1079|回复: 7

[编程技巧] 维数不对的问题

[复制链接]
发表于 2007-12-19 23:25 | 显示全部楼层 |阅读模式

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

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

x
function vtb5(tf,delt)
close all;clc
tf=input('tf=');
delt=input('delt=');
fid1=fopen('disp','wt');
M=5*[5 5 0 0;5 25 0 0;0 0 6 0;0 0 0 6];
C=800*[4 0 (-4) 0;0 4 0 (-4);-4 0 5 0;0 (-4) 0 5];
K=10^5*[4 0 (-4) 0;0 4 0 (-4);-4 0 5 0;0 (-4) 0 5];
x0=[1 1 1 1]';
v0=[1 1 1 1]';
bita=1/6;
md=inv(M+delt/2*C+bita*delt^2*K);
m0=inv(M);
[E,F]=eig(m0*K);
diag(sqrt(F));
for t=0:delt:tf;
    f=[0 0 (-'Dirac(t)') (-'Dirac(t-0.05)')]';
    if t==0;xdd0=m0*(f-K*x0-C*v0);
    else
        xdd=md*(f-C*(v0+delt/2*xdd0)-K*(x0+delt*v0+(1/2-bita)*delt^2*xdd0));
        x=md*(M*(x0+delt*v0+delt^2/3*xdd0)+C*(delt/2*x0+delt^2/3*v0+delt^3/12*xdd0)+delt^2/6*f);
        xd=v0+delt/2*(xdd0+xdd);
        xdd0=xdd;v0=xd;x0=x;
        fprintf(fid1,'%10.4f',x0);
        t
    end
    fid2=fopen('disp','rt');
    n=tf/delt;
    x=fscanf(fid2,'%f',[4,n]);
    t=1:n;
    figure('numbertitle','off','name','weiyi of 1','pos',[450 180 400 420]);
    plot(t,x(1,t)),grid,xlabel('shijian*0.1'),title('x11')
     figure('numbertitle','off','name','weiyi of 2','pos',[350 160 400 420]);
    plot(t,x(2,t)),grid,xlabel('shijian*0.1'),title('x22')
     figure('numbertitle','off','name','weiyi of 3','pos',[250 140 400 420]);
    plot(t,x(3,t)),grid,xlabel('shijian*0.1'),title('x33')
    figure('numbertitle','off','name','weiyi of 4','pos',[150 120 400 420]);
    plot(t,x(4,t)),grid,xlabel('shijian*0.1'),title('x44')
end


说  xdd0=m0*(f-K*x0-C*v0);  这儿维数不对

[ 本帖最后由 eight 于 2007-12-20 00:10 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-12-20 00:11 | 显示全部楼层
原帖由 firefree 于 2007-12-19 23:25 发表
function vtb5(tf,delt)
close all;clc
tf=input('tf=');
delt=input('delt=');
fid1=fopen('disp','wt');
M=5*[5 5 0 0;5 25 0 0;0 0 6 0;0 0 0 6];
C=800*[4 0 (-4) 0;0 4 0 (-4);-4 0 5 0;0 (-4) 0 5] ...

发帖前请先看置顶帖
发表于 2007-12-20 09:28 | 显示全部楼层

回复 #1 firefree 的帖子

请贴出错提示
发表于 2007-12-20 09:37 | 显示全部楼层

回复 #3 sigma665 的帖子

xdd0=m0*(f-K*x0-C*v0);
其中:x0:4*1
K:4*4
而你的f不是4*1
f=[0 0 (-'Dirac(t)') (-'Dirac(t-0.05)')]';   

调程序要细心,更要耐心,一步一步
 楼主| 发表于 2007-12-20 14:40 | 显示全部楼层
close all;clc
tf=input('tf=');
delt=input('delt=');
fid1=fopen('disp','wt');
M=5*[5 5 0 0;5 25 0 0;0 0 6 0;0 0 0 6];
C=800*[4 0 (-4) 0;0 4 0 (-4);-4 0 5 0;0 (-4) 0 5];
K=10^5*[4 0 (-4) 0;0 4 0 (-4);-4 0 5 0;0 (-4) 0 5];
x0=[1 1 1 1]';
v0=[1 1 1 1]';
bita=1/6;
md=inv(M+delt/2*C+bita*delt^2*K);
m0=inv(M);
[E,F]=eig(m0*K);
diag(sqrt(F));
for t=0:delt:tf;
    f=[0 0 -Dirac(t) -Dirac(t-0.05)]';
    if t==0;xdd0=m0*(f-K*x0-C*v0);
    else
        xdd=md*(f-C*(v0+delt/2*xdd0)-K*(x0+delt*v0+(1/2-bita)*delt^2*xdd0));
        x=md*(M*(x0+delt*v0+delt^2/3*xdd0)+C*(delt/2*x0+delt^2/3*v0+delt^3/12*xdd0)+delt^2/6*f);
        xd=v0+delt/2*(xdd0+xdd);
        xdd0=xdd;v0=xd;x0=x;
        fprintf(fid1,'%10.4f',x0);
        t
    end
    fid2=fopen('disp','rt');
    n=tf/delt;
    x=fscanf(fid2,'%f',[4,n]);
    t=1:n;
    figure('name','weiyi of 1','pos',[450 180 400 420]);
    plot(t,x(1,t)),grid,xlabel('shijian*0.1'),title('x11')
     figure('numbertitle','off','name','weiyi of 2','pos',[350 160 400 420]);
    plot(t,x(2,t)),grid,xlabel('shijian*0.1'),title('x22')
     figure('numbertitle','off','name','weiyi of 3','pos',[250 140 400 420]);
    plot(t,x(3,t)),grid,xlabel('shijian*0.1'),title('x33')
    figure('numbertitle','off','name','weiyi of 4','pos',[150 120 400 420]);
    plot(t,x(4,t)),grid,xlabel('shijian*0.1'),title('x44')
end

tf=10
delt=1
??? Index exceeds matrix dimensions
.

将原程序 f=[0 0 -Dirac(t) -Dirac(t-0.05)]';改后,编译能过,可不让运行
楼上大牛指点下?
查过矩阵也没问题啊
发表于 2007-12-20 14:51 | 显示全部楼层

回复 #5 firefree 的帖子

再帖错误信息最好全面

这个问题已讨论多次,去置顶帖子里看看吧
发表于 2007-12-20 15:39 | 显示全部楼层

回复 #5 firefree 的帖子

找不出来,你一行一行的输进去
发表于 2007-12-20 18:28 | 显示全部楼层

回复 #1 firefree 的帖子

这样的问题根源很简单,重要的是楼主及后来遇到这样的问题的人,能够静下来逐条分析自己的参数。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 07:53 , Processed in 0.078941 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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