[已解决] 赋值问题 这个K应该怎么赋值才对啊

[复制链接]
刘为. 发表于 4 天前

n=64;
key=0.512;
an=linspace(3.56,4,176);
hold on;box on;axis([min(an),max(an),-0.5,1.5]);
N=n^2;
xn=zeros(1,N);
for a1=an;
    a2=an;
    y=key;
x=key;
for k=1:16;
y=a1*y*(1-y);
x=(a2+(4-a2)*y).*x.*(1-x);%产生公式
end;
for k=1:N;
y=a1*y*(1-y);
x=(a2+(4-a2)*y).*x.*(1-x);
xn(k,1)=x;
b(k,1)=x;%一维矩阵记录迭代结果
end;
plot(a*ones(1,N),xn,'k.','markersize',1);
end;
figure;
imhist(b)

红色部分有问题



最佳答案


cbcbcbcb 发表于 4 天前
刘为. 发表于 2022-9-22 20:59
a=an呢  我是一维的logistics映射变为了二维logistics映射  需要绘出映射图,但是plot这条指令显示维度超 ...

a = an,你在程序里好像也没有这条语句吧!让我们盲猜呢,大兄弟!
plot那条语句改成以下形式。
  1. plot(an,xn(:,:,k) ,'k.','markersize',1);
复制代码

12 条回复


caicaibi 发表于 4 天前
  1. xn(k,:)=x;
  2. b(k,:)=x;%一维矩阵记录迭代结果
复制代码

刘为. 发表于 4 天前

我这么改过,直接错误原因   左侧的大小为 1×4096,右侧的大小为 1×176。

caicaibi 发表于 4 天前
  1. xn(:,k)=x;
  2. b(:,k)=x;%一维矩阵记录迭代结果
复制代码

每次赋值,矩阵保持一致就OK

刘为. 发表于 4 天前
caicaibi 发表于 2022-9-22 19:29
每次赋值,矩阵保持一致就OK

我在xn(k)=x之前k的值还是4096  但是不管xn(k)=x  xn(:,k)=x;xn(k,:)=x;还是之后  k自动变为了1,左边矩阵也自动变为了1×1矩阵

cbcbcbcb 发表于 4 天前
刘为. 发表于 2022-9-22 19:34
我在xn(k)=x之前k的值还是4096  但是不管xn(k)=x  xn(:,k)=x;xn(k,=x;还是之后  k自动变为了1,左边矩 ...
  1. clear;
  2. clc;
  3. n=64;
  4. key=0.512;
  5. an=linspace(3.56,4,176);
  6. hold on;box on;axis([min(an),max(an),-0.5,1.5]);
  7. N=n^2;

  8. [m,nn]=size(an);

  9. xn=zeros(1,nn,N);
  10. b=zeros(1,nn,N);

  11. for a1=an
  12.    
  13.     a2=an;
  14.     y=key;
  15.     x=key;

  16. for k=1:16
  17. y=a1*y*(1-y);
  18. x=(a2+(4-a2)*y).*x.*(1-x);%产生公式
  19. end

  20. for k=1:N
  21. y=a1*y*(1-y);
  22. x=(a2+(4-a2)*y).*x.*(1-x);
  23. xn(:,:,k)= x;
  24. b(:,:,k)= x ;%一维矩阵记录迭代结果
  25. end

  26. % plot(a*ones(1,N),xn ,'k.','markersize',1);
  27. end
  28. figure;
  29. imhist(b)
复制代码

刘为. 发表于 4 天前

想要这个指令图  plot(a*ones(1,N),xn ,'k.','markersize',1); 但是运行错误  表示数据的维度不能超过二维。  那应该运用什么指令

cbcbcbcb 发表于 4 天前
刘为. 发表于 2022-9-22 20:42
想要这个指令图  plot(a*ones(1,N),xn ,'k.','markersize',1); 但是运行错误  表示数据的维度不能超过二 ...

你知道我为什么把那个plot注释了吗?因为我不知道你a代表什么意思,你程序里面也没有对a的说明。

刘为. 发表于 4 天前
cbcbcbcb 发表于 2022-9-22 20:47
你知道我为什么把那个plot注释了吗?因为我不知道你a代表什么意思,你程序里面也没有对a的说明。 ...

a=an呢  我是一维的logistics映射变为了二维logistics映射  需要绘出映射图,但是plot这条指令显示维度超出范围了

刘为. 发表于 4 天前
刘为. 发表于 2022-9-22 20:59
a=an呢  我是一维的logistics映射变为了二维logistics映射  需要绘出映射图,但是plot这条指令显示维度超 ...

这是公式
00dea2b4cf7b4fb6a66fb449e702bb2.png

刘为. 发表于 4 天前

一维logistics的代码
n=64;
key=0.512;
an=linspace(3.1,3.99,400);
hold on;box on;axis([min(an),max(an),-1,2]);
N=n^2;
xn=zeros(1,N);
for a=an;
x=key;
for k=1:20;
x=a*x*(1-x);%产生公式
end;
for k=1:N;
x=a*x*(1-x);
xn(k)=x;
b(k,1)=x;%一维矩阵记录迭代结果
end;
plot(a*ones(1,N),xn,'k.','markersize',1);
end;

cbcbcbcb 发表于 4 天前
刘为. 发表于 2022-9-22 20:59
a=an呢  我是一维的logistics映射变为了二维logistics映射  需要绘出映射图,但是plot这条指令显示维度超 ...

a = an,你在程序里好像也没有这条语句吧!让我们盲猜呢,大兄弟!
plot那条语句改成以下形式。
  1. plot(an,xn(:,:,k) ,'k.','markersize',1);
复制代码
回复此楼

刘为. 发表于 4 天前
cbcbcbcb 发表于 2022-9-22 21:07
a = an,你在程序里好像也没有这条语句吧!让我们盲猜呢,大兄弟!
plot那条语句改成以下形式。
...

谢谢  谢谢  新手 没有师兄 自己在弄:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表