-5

我对以下代码有疑问:

.
.
.

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))),任何专家机构可以帮助我吗?!

谢谢你 ...

4

1 回答 1

1

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

1)确保文件路径格式正确:

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

fullfile函数连接文件路径和名称的元素,并注意使用正确的文件路径分隔符(适用于可移植代码,无需记住在文件路径的末尾添加/\等)。

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))。

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

于 2013-05-31T15:59:52.213 回答