声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1528|回复: 3

[综合讨论] 提示Index exceeds matrix dimensions,改变矩阵维数变量又不提

[复制链接]
发表于 2012-6-15 17:15 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 benyou 于 2012-6-15 17:30 编辑

由于matlab不熟,现在写论文编了一个程序不知道为什么,我改变参数10到48(也就是矩阵的维数)就会提示Index exceeds matrix dimensions。谁能帮忙指点下错误的地方,程序如下:
function main
clear all
rand('state',0);
randn('state',0);
N_dot=48;%改成10就行了可是我就得用到48乘以48的啊,怎么办?
p=1000;
ax=[106.382        119.036        131.365        143.158        154.211        164.338        173.363        181.133        187.515        192.399        195.703        197.369        197.369        195.703        192.399        187.515        181.133        173.363        164.338        154.211        143.158        131.365        119.036        106.382        93.618        80.964        68.635        56.842        45.789        35.662        26.637        18.867        12.485        7.601        4.297        2.631        2.631        4.297        7.601        12.485        18.867        26.637        35.662        45.789        56.842        68.635        80.964        93.618];
az=[10        15        20        25        30        35        40        45        50        55        60        65        70        75        80        85        90        95        100        105        110        115        120        125        130        135        140        145        150        155        160        165        170        175        180        185        190        195        200        205        210        215        220        225        230        235        240        245];
v10=30;
alpha=0.22;
k=0.00464;
delta_t=0.2;
Uz=v10*(az/10).^alpha;  %产生功率谱
vvd=0.4*v10/2.302585;
N=p;
posi=zeros(N_dot,N_dot,N);
ch=zeros(N_dot,N_dot,N);
S=zeros(N_dot,N_dot,N);
H=zeros(N_dot,N_dot,N);
dw=10*pi;
dltw=dw/N;
for m=1:1:N
    mid1_S_H=zeros(N_dot,N_dot);
    mid2_S_H=zeros(N_dot,N_dot);
    n(m)=dw*m/N;%频率
    f(m)=1200*n(m)/v10/2/pi;
    Pn(m)=4*k*v10^2*f(m).^2/(1+f(m).^2).^(4/3);% 风速谱,如计算竖向Panofsky 谱将其替换为相应函数Uf=1;%摩擦速度
    Su(m)=Pn(m)/n(m);
    for g=1:N_dot
        for h=1:N_dot
            if g==h
                ch(g,h,m)=1;
            else
                delta_z=sqrt(256*(ax(g)-ax(h)).^2+100*(az(g)-az(h)).^2);
                ch(g,h,m)=exp(-2*n(m)/2/pi*delta_z/(Uz(g)+Uz(h)));
                f_star=2*n(m)/2/pi*abs(az(g)-az(h))/(Uz(g)+Uz(h));
                if f_star<=0.1
                    posi(g,h,m)=pi*f_star/4;
                else if f_star<=0.125
                        posi(g,h,m)=-10*pi*f_star+1.25;
                    else posi(g,h,m)=pi-2*pi*rand(1);
                    end
                end
            end
        end
    end
    for g=1:N_dot
        for h=1:N_dot
            S(g,h,m)=Su(m)*ch(g,h,m)*exp(i*posi(g,h,m));
            mid1_S_H(g,h)=S(g,h,m);
        end
    end
    [mid2_S_H,a]=chol(mid1_S_H);
    mid2_S_H=mid2_S_H';
    clear g;
    clear h;
    for g=1:N_dot
        for h=1:N_dot
            H(g,h,m)=mid2_S_H(g,h);
        end
    end
end
回复
分享到:

使用道具 举报

 楼主| 发表于 2012-6-15 17:41 | 显示全部楼层
这问题困扰了我两天了,没办法了,卡住了
发表于 2012-6-16 08:06 | 显示全部楼层
按照错误提示,只要检查错误提示行数的Index 与相应的矩阵变量维数的关系即可。可以在workspace或者用size函数查看矩阵变量的维数
发表于 2012-6-17 01:12 | 显示全部楼层
Ref: 常见的程序出错问题整理 http://forum.vibunion.com/thread-46001-1-1.html
12F->Index exceeds matrix dimensions.   Attempted to access b(3,2); index out of bounds because size(b)=[2,2].
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 04:45 , Processed in 0.068445 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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