指数超过矩阵维度

时间:2014-01-23 23:02:33

标签: matlab matrix indexing exceed

我和之前的讨论有同样的问题,

[here] Can someone explain how to graph this sum in MATLAB using contourf?

然而,现在我还没有处理contourf,因为我还有另外两个问题需要回答。

我被告知取N = 50,phi1 = 300,phi2 = 400,0 <= x <= 1,且0 <= y <= 1,并且让x和y为100等间距的矢量积分,包括终点。

并且继承了这两个问题,

a)在单个图中(图1),绘图phi(x,y = 1),phi(x,y = 0.8),phi(x,y = 0.5)和phi(x,y = 0.1) )。确保轴已标记,曲线颜色不同。

b)在单独的图中(图2),绘图phi(x,y = 1),phi(x,y = 0),phi(x = 0,y)和phi(x = 1,y) )作为子图(即4个独立的子图)。确保所有内容都贴有标签,希腊字母phi显示为yaxis标签。

我已经回答了问题a),但是当我尝试回答问题b时,我得到了错误。帮助

clear all
close all
clc
clear

N=50;
phi1=300;
phi2=400;
%Phix10
%Phix08
%Phix05
%Phix01
x=linspace(0,1,100);
y=linspace(0,1,100);

y=1;
for k=1:100
   sum=0;
   tot=0;
    for n=1:N
        sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k));
    end
    Phi10(k)=phi1 - sum;
end

y=.8;
for k=1:100
   sum=0;
   tot=0;
    for n=1:N
        sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k));   
    end
    Phi08(k)=phi1 - sum;
end

y=.5;
for k=1:100
   sum=0;
   tot=0;
    for n=1:N
        sum=sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k));
    end
    Phi05(k)=phi1 - sum;
end

y=.1;
for k=1:100
   sum=0;
   tot=0;
    for n=1:N
        sum=sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k));
    end
    Phi01(k)=phi1 - sum;
end


figure(1);
plot(x,Phi10,'r');
hold on;
plot(x,Phi08,'g');
hold on;
plot(x,Phi05,'y');
hold on;
plot(x,Phi01);
hold on;
title('plotting 1');
xlabel('x');
ylabel('y');


%my answer for question b
y=1;
for k=1:100
   sum=0;
   tot=0;
    for n=1:N
        sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k));
    end
    PhiB1(k)=phi1 - sum;
end

y=0;
for k=1:100
   sum=0;
   tot=0;
    for n=1:N
        sum = sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k));
    end
    PhiB2(k)=phi1 - sum;
end

x=0;
for k=1:100
    sum=0;
    for n=1:N

          % here's where i got the error
          sum = sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y(k))+(exp(n*pi)-1)*exp(-n*pi*y(k)))*sin(n*pi*x);
    end
    PhiB3(k)=phi1 - sum;
end

% x=1;
% for k=1:100
%     sum=0;
%     for n=1:N
%         sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x);
%     end
%     PhiB4(k)=phi1 - sum;
% end

figure(2);
plot(x,PhiB1,'r');
hold on;
plot(x,PhiB2,'g');
hold on;
plot(x,PhiB3,'y');
hold on;
plot(x,PhiB4);
hold on;

1 个答案:

答案 0 :(得分:0)

您在错误所在的行中有y(k),但是y=0,因此它不是矢量。将y(k)的两次出现替换为y,看看会发生什么。