登录论坛

查看完整版本 : [紧急求助]应该是一个简单的问题,但是折磨我很久~涉及到字符串表达的一个问题


yanxuan
2008-11-07, 03:41
:cry:
大概可以简述成这样

i=1:22

然后我想定义的内容是 Fi=fft(X),X是每个循环里会存在的一个数据矩阵,这样我就可以得到F1,F2……到F22

现在的问题是我不知道怎样表示Fi 让Matlab认识,我写的是['F',int2str(i)]=fft(X),总告诉我不对,可能我不应该用[],这样它就理解成矩阵了。但是怎么表示Fi 呢,假如i是一个变量的情况下,那个等式的左半边的书写格式是怎样的?

希望能够得到高人解惑~~~~~~~~~困扰我好久,觉得应该是个简单问题,就是搞不定,看的书里也没有详细关于这个方面介绍的。

不胜感激
:lovely: :lovely:

awodo
2008-11-07, 18:05
我也是初学者,我是用cell array,让F{i}=fft(x)。

yanxuan
2008-11-07, 18:22
谢谢回答,但是我测试了下不太对。

我简单的测试了下,
for i=1:3
F{i}=zeros(i,i)
end
我希望得到的结果应该是F1=zeros(1,1), F2=zeros(2,2),F3=zeros(3,3)
但用F{i}得到的结果不是这样,而是出来3个
F =

[0] [2x2 double] [2x2 double]

关于['F',int2str(i)]单独这么表示matlab认识这是Fi
写到定义式,诸如['F',int2str(i)]=zeros(i,i)它就不认识了,说表示不对

谁能帮帮忙啊,5555555
程序都写完了,就卡在这个地方了……
老板催着要看结果……

awodo
2008-11-15, 15:36
看来你是没搞懂F{i}是什么意思,:smile: 。它表示的是一个cell array,是个数组。你调用的时候的这样:F{1},F{2},...。

awodo
2008-11-15, 16:08
终于找到个你要的答案了,
for i=1:5
a=['F' num2str(i) '=' 'zeros(i,i)' ];
eval(a);
end

laosam280
2008-11-17, 17:00
调用数组的元素要用小括号呀!楼主

yanxuan
2008-11-17, 21:40
谢谢各位~回头我去试试这些法子

不过我找到了另外一个法子来解决这个问题,就是把F视为一个大的矩阵,把Fi 视为其中的小矩阵,然后就可以以F(:,i) 这种方式来定义,以后我想调用Fi 就可以直接用F这个大矩阵的子矩阵来表示。

awodo
2008-11-18, 01:44
用普通数组也就是F(:,i)来调用,比较麻烦,要调用两行就得写成F([i,j],:).而用cell array F{}就简单了