在matlab中使用我的小代码

时间:2013-05-31 14:01:23

标签: matlab matrix

我遇到以下代码问题:

.
.
.

a=zeros(1000,ctimes);
a1=zeros(1000,ctimes);
hold all

for i=num1:num2;
colors=Lines(i);
switch phantom
   case 1    
path=['E:\filename\']; 
path1=['E:\filename2\']; 


n=['S',num2str(emt),'_',num2str(i),'.m'];
d=load([path,name]);
a(:,i)=complex(d(:,2),d(:,3)));


n1=['S',num2str(emt),'_',num2str(i),'.m'];
d1=load([path1,name1]);
a1(:,i)=complex(d1(:,2),d1(:,3)));

问题是无法定义a(:,i)。虽然没有问题,或者complex(d1(:,2),d1(:,3))),任何专家团体都可以帮助我吗?!

谢谢......

1 个答案:

答案 0 :(得分:1)

您确定要正确形成文件名吗?您正在创建变量n,但在形成路径时使用变量name。以下是一些建议的调试步骤:

1)确保文件路径正确形成:

filePath = fullfile(path, name);
disp(filePath);

fullfile函数连接文件路径的元素& name,并负责使用正确的文件路径分隔符(适用于可移植代码,阻止您必须记住在文件路径的末尾添加/\等)。

2)检查d是否正确加载:

clear d;
d = load(filePath);
disp(size(d));

3)检查您计算的复杂数量的大小,然后再将其分配给a(:,i)

temp = complex(d(:,2), d(:,3));
disp(size(temp));

当您完成这些操作时,您应该已经找到了问题(temp的尺寸应该是[1000 1]以匹配a(:,i)的尺寸,当然)。< / p>

另外,您应该避免使用i作为变量名,尤其是当您使用复数时,因为它的内置值为sqrt(-1)。因此,c = a + i * b;会创建一个复数(a,b)并将其放入c - 直到您更改i的含义。一个简单的解决方案是使用ii。顺便说一句,j也是如此。这是Matlab中不幸的设计决策之一,您可以覆盖内置的值......